2

RichTextEdit コントロールのタブ キーの動作をカスタマイズする必要があります。

現在私が持っている最高のものはこれです:

editBox.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.field_PreviewKeyPress);


  private void field_PreviewKeyPress(object sender, PreviewKeyDownEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Tab: 
                     //Some code here
                break;
            }
        }

タブキーは正常に登録されていますが、その後、コントロールはキーを処理し、フォーカスを次のコントロールに移動します。このキー イベントを消費する方法はないようです。

4

3 に答える 3

1

この CodeProject の記事がヒントになるかもしれません。

TabKeyIntercept - Windows.Forms フォームで Tab キーをインターセプトして処理する

[...] 幸いなことに、フォームの基本クラスにはメソッドが存在しprotected override bool ProcessTabKey(bool forward) ます。このメソッドを使用すると、Tab キーをインターセプトして「消費」できます。

そして、結果として、 ProcessTabKey()メソッドの戻り値が false の場合、Tab キーはそれを OnKeyDown() メソッドにします。ただし、もちろん、コードがメソッドで Tab キーを「消費」する場合は、ProcessTabKey()おそらくメソッドでそれを処理する必要はありませんOnKeyDown()

また、Control-Tab の組み合わせでOnKeyDown()メソッドになります。

したがって、これらのことを知っていれば、Tab キーのカスタマイズされた使用方法を定義する準備ができています。また、フォームをコーディングして、ユーザーが Control-Tab の組み合わせを使用して、Tab キーの通常の使用/意味と、私たちのカスタム使用。

于 2009-02-04T07:52:33.870 に答える
1

自分で解決策を見つけました - bool RichTextEdit.ProcessCmdKey(ref Message m, Keys keyData) をオーバーライドします。

于 2009-02-04T10:23:34.890 に答える
0

「RichTextEdit」コントロールを使用していると言いますが、RichTextBox を意味していると思います。その場合、AcceptsTabプロパティを True に設定して、タブ キーを処理できるようにする必要があります。

于 2009-02-04T07:50:08.180 に答える