0

Visual Studio 2008でC#WinFormアプリケーションに取り組んでおり、DevExpressを使用しています。

ボタンのクリックをトリガーするいくつかのボタン(DevExpress SimpleButton)にショートカットを追加しました(CTRL + R、CTRL Bなど...)。ユーザーがCTRLキーを押したままにすると、各ボタンの横にあるツールチップにショートカットテキストを表示したいと思います。

DevExpressコントロール「ToolTipController」を使用しようとしましたが、ツールチップが1つしかない場合は問題なく機能します。ただし、一度に複数のツールチップを表示したいと思います。最後に追加されたツールチップのみが表示されているようです。

一度に複数のツールチップを表示することは可能ですか?または、この問題を解決する方法について他に何か提案がありますか?

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 に答える