0

ToolStrip に ToolStripComboBox があり、TAB キーを押すと、次のツールストリップ ボタンにフォーカスが移ります。この動作を変更して、代わりにフォームのリッチテキスト ボックスにフォーカスを当てたいと思います。

問題は、ToolStripComboBox に PreviewKeyDown イベントがないことです。また、ホストの ToolStrip Toolbar の PreviewKeyDown は、タブ キーがコンボで押されたときに呼び出されません (押されていくつかのツールストリップ ボタンがフォーカスされたとき)。

ツールストリップ ツールバーの TabStop は false です。

何か案は?

4

1 に答える 1

1

ToolStrip コントロールがキーを取得する前に、フォーム レベルでこれをキャッチできます。フォームの ProcessCmdKey() メソッドをオーバーライドし、次のようにします。

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if (keyData == Keys.Tab && this.ActiveControl == toolStripComboBox1.Control) {
            richTextBox1.Focus();
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }
于 2010-05-25T14:00:01.307 に答える