同时显示多个工具提示 (DevExpress)
本文关键字:DevExpress 工具提示 显示 | 更新日期: 2023-09-27 18:36:17
我正在Visual Studio 2008中开发C# WinForm应用程序,并且正在使用DevExpress。
我为一些按钮(DevExpress SimpleButton)添加了快捷方式,这些按钮会触发按钮单击(CTRL + R,CTRL B等...)。我想在用户按住 CTRL 键时在每个按钮旁边的工具提示中显示快捷方式文本。
我尝试使用DevExpress控件"工具提示控制器",如果我只有一个工具提示,则可以正常工作。但我想一次显示多个工具提示。似乎只显示添加的最后一个工具提示。
是否可以一次显示多个工具提示?或者有人对如何解决这个问题有任何其他建议吗?
我通过创建一个看起来类似于标准工具提示(带有标签的小框)的 WPF 控件来解决此问题。然后,我在表单上对ProcessCmdKey和OnKeyUp进行了覆盖,以收听CTRL键向下和向上键。
当用户按住 CTRL 键时,我将遍历具有快捷方式的所有控件,并在该控件之上创建一个 WPF 控件。对于每个 WPF 控件,我设置了相应的快捷方式文本。释放 CTRL 键后,我删除了 OnKeyUp 中的所有 WPF 控件。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{ if ((msg.Msg == WM_KEYDOWN) && ModifierKeys == Keys.Control && !_isKeyDown)
{
_isKeyDown = true;
ShowShortCutToolTips();
this.Focus();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
protected override void OnKeyUp(KeyEventArgs e)
{
base.OnKeyUp(e);
if(e.KeyValue == 17 || e.Control) // 17 = Control Key
{
_isKeyDown = false;
HideShortCutToolTips();
}
}