2012-02-13 4 views
2

C#Windowsアプリケーションで1つのRichTextBoxを使用しています。私は、特定の条件でキーボードから任意のキーを入力することをユーザーに制限する必要があります。そう、私はRichTextBoxKeyDownイベントに次のコード行を書いた:WinFormsアプリケーションでキーを非表示にできない

private void richTextBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    e.SuppressKeyPress = true; 
} 

これは、英語USキーボードのために正常に動作しています。しかし、地域設定を韓国語とキーボード言語を韓国語に変更したとき、上記の文を実行した後でも、韓国語の文字(?????など)を入力できます。

も、私は次のコード

private void richTextBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    e.SuppressKeyPress = true; 
    e.Handled = true; 
} 

と試みたが、無駄でいます。

すべてのキーボードレイアウトで入力を抑制するにはどうすればよいですか?

+0

コントロールのImeModeプロパティをOffに設定するとどうなりますか? –

+0

Key Upイベントを試しましたか? http://stackoverflow.com/questions/796654/how-can-i-prevent-the-keydown-event-of-a-form-in-c-sharp-from-firing-more-than-o – oliveromahony

答えて

0

実際にキーを非表示にしたいのですか、またはユーザーがテキストを編集しないようにしますか?テキストを編集する

は簡単にIMEを介して入力キーを押してカウントされませんので、おそらく動作しませんrichTextBox1.ReadOnly = true;

あなたのコードに防止することができます。

さらに別の方法は、WM_CHAR/KeyPressハンドラでブロックしようとしています。

+0

私は必要ですキーを押さえる。実際のテーマは、テキストボックス内のテキストのインデックス位置のいくつかにユーザーがテキストを入力するのを制限する必要があります。 –

+0

@sampathkumar私は 'ReadOnly'を使って、cursorposやselectionが変わるたびに変更します。 1つの問題のあるケースは、選択が禁止インデックスにまたがる場合です。既存の 'MaskedTextBox'コントロールを調べることもできます。 – CodesInChaos

+0

あなたの提案をありがとう。あなたが言ったように、私は選択された条件でReadonlyプロパティをtrueに設定し、Readuplyプロパティをkeyupイベントでfalseにしてみました。それは要件を満たしています。どうもありがとう。 –

関連する問題