• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンボボックスで日本語入力をハンドルするとき)

コンボボックスで日本語入力をハンドルする際の問題

このQ&Aのポイント
  • Visual Studioを使って.NET 2005 の Visual Basicでコンボボックスで日本語入力をハンドルする際に問題が発生しています。入力値が正しくハンドルされず、複数回のイベントが発生してしまうため、うるさくなってしまいます。
  • コンボボックスにTextChangedのイベントハンドラを設定しているだけで、1文字ずつの入力では問題がないのですが、日本語変換を経由して複数文字の入力をすると、イベントが複数回発生してしまいます。例えば、「生麦生米生卵」と変換して入力すると、6回のハンドルが実行されます。
  • 問題を解決するために、日本語変換による複数文字の入力でもイベントが1回だけ発生するようにする方法はあるのでしょうか。手入力だけでなく、プログラム上から複数のボックスに入力する場合も考慮しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

まずはじめに、1文字ずつイベントを検知する必要性があるんでしょうか? そうであれば、恐らく回避は出来ないのではないかと。 そうでないのであれば、まずは「何をもって入力完了とみなすか」を 考えた方がいいと思います。 フォーカスが他のコントロールに移ったときに完了とするとか、 Enterを押されたときに完了とするとか。 あとは、Validating、Validatedイベントを使って検知なりチェックなりを 行うのがいいかと。 ちなみに、Enterを押されたときに完了とするような処理を行うなら、 KeyDownイベント辺りでEnterキーを検知したら、Validateメソッドで Validatingイベントを起こせば…よかったはず。確か。 あと、プログラムで文字列をセットする際には、RemoveHandlerで一時的に イベントハンドラを外してイベントプロシージャが動かないようにしておき、 終わったらAddHandlerで元に戻すのがいいと思います。

ShiozawanoYuki
質問者

お礼

ありがとうございます。1文字単位での検知までは今回は不要です。 なにせ付け焼き刃すらないままに開発を始めてしまったのでイベントに何があるなんてクリックくらいしか知りませんでした…。信じられないくらいいろいろあって泡噴きそうです。 どうやら Validating あたりで解決できそうです。

その他の回答 (1)

  • unamana19
  • ベストアンサー率62% (56/89)
回答No.1

Validatingイベントでは駄目なんでしょうか?

ShiozawanoYuki
質問者

お礼

ありがとうございます。そういうものがあるんですね。調べてみます。

関連するQ&A