同时显示几个工具提示(DevExpress)

时间:2012-06-05 19:30:44

标签: c# winforms devexpress tooltip

我正在使用Visual Studio 2008中的C#WinForm应用程序并使用DevExpress。

我添加了一些按钮(DevExpress SimpleButton)的快捷方式,它触发了一个按钮点击(CTRL + R,CTRL B等等......)。当用户按住CTRL键时,我想在每个按钮旁边的工具提示中显示快捷方式文本。

我尝试使用DevExpress控件'ToolTipController',如果我只有一个工具提示,那就行了。但我想一次显示多个工具提示。似乎只显示了添加的最后一个工具提示。

是否可以一次显示多个工具提示?或者有没有人对如何解决这个问题有任何其他建议?

1 个答案:

答案 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();
        }
    }