2

この上から髪を伸ばしています。非常に単純な Windows フォーム プログラム。私はリッチテキストボックスを持っていて、バックスペースがリッチテキストボックスで何もしないようにしたい. これが私のコードです

private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (e.KeyChar == (char)Keys.Back)
     {
          e.handled = true;
     }
}

e.handled にブレークポイントを設定してバックスペースを入力すると、実際にブレークします。ただし、バックスペースは引き続きリッチテキストボックスになります。そのため、PreviewKeyDown が使用されている例を見てきましたが、それらの例はどれも機能しません! 私は試した

void richTextBox1.PreviewKeyDown(object sender, KeyPressEventArgs e)
{
     e.Handled = true;
}

ただし、KeyPressEventArgs は無効です。フォームが提供するものを使用すると、それは PreviewKeyDownEventArgs であり、利用可能な e.Handles はありません。では、どうやってこれを行うのですか?

ありがとう

4

2 に答える 2

5

バックスペース キーの押下をキャンセルするには、KeyDown イベントを使用します。

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.Back)
     {
          e.Handled = true;
     }
}

KeyPress イベントに関する MSDN ページには、次のコメントがあります。

一部のコントロールは、KeyDown で特定のキー ストロークを処理します。たとえば、RichTextBox は、KeyPress が呼び出される前に Enter キーを処理します。このような場合、KeyPress イベントをキャンセルすることはできず、代わりに KeyDown からキー ストロークをキャンセルする必要があります。

于 2014-10-31T16:27:10.567 に答える
0

これを試して:

if (e.KeyChar == '\b')
于 2014-10-31T16:27:38.813 に答える