0

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

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

我曾尝试使用 DevExpress 控件“ToolTipController”,如果我只有一个工具提示,它就可以正常工作。但我想一次显示多个工具提示。似乎只显示了添加的最后一个工具提示。

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

4

1 回答 1

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();
        }
    }
于 2012-06-13T14:30:21.277 回答