自分で試してみてください。
エディタを開き、テキストを入力し、このテキストの一部にマークを付けて、を押しN
ます。何が起こるのですか?マークされたテキストは。に置き換えられn
ます。
同じことがあなたのでも起こりますRichTextBox
。ここで理解しておくべき重要なことは、設定したイベントでは、一部の機能のみを追加し、デフォルトのイベント処理(OSによって処理される)をそのままにしておくことです。
したがって、コードを使用して、キーを押すだけで実行できます
richTextBox1.Select(1, 3);
これはいくつかの文字を選択し、その後、デフォルトのイベント処理が開始されます。したがって、。に置き換えられるマークされたテキストがいくつかありますN
。
したがって、イベントを自分で処理したものとしてマークするだけです。-propertyを使用せず、Handled
-propertyを使用しSuppressKeyPress
ます。
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.N)
{
richTextBox1.Select(1, 3);
e.SuppressKeyPress = true;
}
}
のドキュメントには、Handled
次のように明確に記載されています。
If you set Handled to true on a TextBox, that control will
not pass the key press events to the underlying Win32 text
box control, but it will still display the characters that the user typed.
これがの公式ドキュメントですSuppressKeyPress
。