我正在使用Visual Studio 2008中的C#WinForm应用程序并使用DevExpress。
我添加了一些按钮(DevExpress SimpleButton)的快捷方式,它触发了一个按钮点击(CTRL + R,CTRL B等等......)。当用户按住CTRL键时,我想在每个按钮旁边的工具提示中显示快捷方式文本。
我尝试使用DevExpress控件'ToolTipController',如果我只有一个工具提示,那就行了。但我想一次显示多个工具提示。似乎只显示了添加的最后一个工具提示。
是否可以一次显示多个工具提示?或者有没有人对如何解决这个问题有任何其他建议?
答案 0 :(得分:0)
我通过创建一个类似于标准工具提示(带标签的小方框)的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();
}
}