gpt4 book ai didi

c# - 在 WPF 中设置和删除工具提示

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:47 24 4
gpt4 key购买 nike

我遇到了一个我无法弄清楚的问题。

我有一个 WPF 窗口,代表 POS 应用程序中使用的物理键盘。每个物理按钮都由一个 WPF 按钮表示。用户将单击一个按钮,该按钮将打开另一个带有控件的窗口,以更改分配给它的功能。当用户将鼠标悬停在按钮上时,会显示一个工具提示,显示当前分配的功能。

设置好新的设置后,我需要刷新toolTips。新工具提示正确显示,但旧工具提示不会删除。如果我使用 Button.ToolTip = null,所有工具提示都会消失。如果我使用 Button.ToolTip = String.Empty,我会得到一个空白的 tooTip。如果没有为按钮分配功能,我不希望显示任何工具提示。

当没有任何内容可显示时,如何简单地删除/停用工具提示?

loadToolTips() 在父窗口中的 Window_Activated 事件期间被触发。

代码:

private void loadToolTips()
{
JPOSDB db = new JPOSDB();
SqlDataReader dr = default(SqlDataReader);
StringBuilder tt = new StringBuilder();

dr = db.getDR("SELECT KeyName, FunctionName, Parameter1, Parameter2 FROM KeyboardSettings JOIN KeyboardFunctions ON KeySetting = FunctionID WHERE KeyboardID = " + runTime.keyboardID);

while (dr.Read())
{
foreach (Control ctrl in grdButtons.Children)
{
if (ctrl.GetType() == typeof(Button))
{
Button button = new Button();
button = (Button)ctrl;
button.ToolTip = null; <--- Causes all tool tips to disappear

if (button.Name.ToString() == dr[0].ToString())
{
tt.Clear();
tt.Append("Function: " + dr[1].ToString());

if (dr[2].ToString().Length > 0)
{
tt.Append(Environment.NewLine);
tt.Append("Value: " + dr[2].ToString());
}

if (dr[3].ToString().Length > 0)
{
tt.Append(Environment.NewLine);
tt.Append("Name: " + dr[3].ToString());
}

button.ToolTip = tt.ToString();
}
}
}
}

dr.Close();
}

最佳答案

您可以使用 ClearValue清除 Depencency ToolTipProperty。看看这是否有帮助。

 Button button = (Button)ctrl;
button.ClearValue(Button.ToolTipProperty);

关于c# - 在 WPF 中设置和删除工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14115424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com