- 題名: リッチテキストボックス内でのIME制御について
- 日時: 2004/12/05 12:10:59
- ID: 7850
- この記事の返信元:
- (なし)
- この記事への返信:
- [7851] Re[1]: リッチテキストボックス内でのIME制御について2004/12/05 14:06:18
- ツリーを表示
(たいていの人がそうあって欲しいように、)IME側の処理は コントロールのkeyDownイベントより先に働きます。 IMEでハンドルされなかった場合の、後の動作は処理内容依存ですね。 例えばメッセージボックスを表示する処理の場合、入力は確定されてしまいますし、 button1.Text="あいうえお"等といったコードの場合は、確定されません。 「IMEでハンドルされなかった場合の、」と書いたとおり、 F1やCtrl+Downやの場合と、F6〜F10等とでは振る舞いが異なります。 F6〜F10等はIME側で使用されて使用済みになり、keyDownへ行きません。 Ctrl+DownはIME側で下キーが「確定」として使用済みとされた後も、 Ctrlキーを押しているせいでkeyDownが発生します。 (その際のキー状態は当然Downキーのままなので、処理に該当してしまいます。) F1も、IMEで機能定義されていないので、keyDownが発生します。 ※IMEのキー定義により動作が異なるのは言うまでもありません。 処理を指示するキーを変えるか、 IMEより先に発生する特殊なイベントがないか調べる、の二択になるかと。
分類:[.NET]
こんにちは。VB.NETでプログラム組んでます。
初めて投稿します。皆様よろしくお願いします。
あるフォームにリッチテキストボックスを設定して
テキストエディタを作成しています。
ある特殊なキー(例えば、Ctrl+↓)を押すと
リッチテキストボックス内で選択された文字を
同一フォーム内に設定したDATAGRIDに書き込みたいと考えています。
そこで、
Private Sub RichTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles RichTextBox1.KeyDown
(特殊なキーが押されたら選択文字をDATAGRIDに書き込みする処理:省略)
End Sub
のようにしています。
しかし、この処理を実行すると、
リッチテキストボックスの中でIMEを使用して漢字入力したときに、
漢字変換されることなく確定してしまいます。
つまりキー入力したときに文字を判定してしまうので、
IMEの文字入力が確定してしまうのではないかと推定しています。
具体的には「あい」と入力すると
「あい」と入力した時点で確定してしまい、
「愛」と変換することができません。
なお、その他は正常に動作しています。
そこで質問なのですが、
IMEの漢字変換が行われている間、
キー認識イベントを回避する方法はありませんでしょうか?
また、正常に動作するような他の方法があればご教示ください。
よろしくお願いします。