在WPF中设置和删除工具提示
本文关键字:删除 工具提示 设置 WPF | 更新日期: 2023-09-27 17:50:26
我遇到了一个问题,我就是不明白。
我有一个WPF窗口,它表示POS应用程序中使用的物理键盘。每个物理按钮由一个WPF按钮表示。用户将点击一个按钮,打开另一个窗口,其中包含更改分配给它的功能的控件。当用户将鼠标悬停在按钮上时,将显示一个工具提示,显示当前分配的功能。
设置新设置后,我需要刷新工具提示。新的工具提示正确显示,但旧的没有删除。如果我使用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
清除dependency ToolTipProperty。看看这是否有帮助。
Button button = (Button)ctrl;
button.ClearValue(Button.ToolTipProperty);
我不确定我是否理解了这个问题,但是你可以用这行:
var s = tt.ToString();
button.ToolTip = string.IsNullOrEmpty(s) ? null : s;
如果这不能回答你的问题,请留下评论,我将删除它。