- - PR -
textboxの入力文字制御について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-06 14:35
いつもお世話になっております。
現在、VB.net2003にてWindowsアプリケーションの開発を行っております。 早速の質問なのですが、 現在、textboxを継承した半角カナ入力文字のみ入力可能な派生コントロールクラスを 作成しております。 そこで、上記コントールに無効な文字が入力された時にポップアップを出したいのですが、上手くいきません。。。 具体的には、無効な文字が複数入力された場合に複数回のポップアップが出てしまうのです。原因としては、IMEからの入力の場合、TextChangedイベント発生時に一文字ずつ 文字が入っている事でした。 上記現象を回避する為、色々思考錯誤しているのですが、どうしても解決できません。 何か良い案はありませんでしょうか? 当掲示版でも、よく見かけるWndProcをオーバライドで対応出来ますでしょうか? (一度、試したのですが、上手くいかなくて・・・。) 他にも、WndProcをオーバライドし、 IMEの確定後文字列を取得する方法では出来たのですが、 それだと重装備になりすぎて不安なので・・・。 すみませんが、ご意見をいただけないでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2007-03-06 15:56
TextChanged イベントだけでは、IME からの連続入力判定はできません。 IME からの WM_CHAR の送信が完全に終わるまで、ポップアップを出さないしてみてはどうでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-03-06 16:13
いつもありがとうございます。
そんな事が出来るのでしょうか? WM_IME_ENDCOMPOSITION 等と組み合わせて行うのでしょうか? 知識が乏しくご迷惑をお掛けしますが、よろしくお願いいたします。 | ||||
|
投稿日時: 2007-03-06 16:41
ごく簡単な実装をしてしまいますと、WM_IME_STARTCOMPOSITION と WM_IME_ENDCOMPOSITION を監視することになりますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-03-06 17:18
さっそくのご返答ありがとうございます。
上記方法ですと、WM_IME_ENDCOMPOSITIONメッセージ後にWM_CHARで一文字ずつ 来ないでしょうか? ただ、方法がまずいだけでしょうか? | ||||
|
投稿日時: 2007-03-06 17:36
WM_CHARではなくてWM_IME_CHARで取得すればいいのでしょうか? もう少しで出来そうな気がします。 | ||||
|
投稿日時: 2007-03-06 17:44
ごめんなさい、ちょっと嘘を教えてしまったみたいです。orz _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-03-06 17:57
IMEModeを指定するだけで解決しそうな気がするのだけど・・・ |