トップ回答者
ユーザーコントロールのEnterキー移動制御

質問
-
複数のユーザーコントロールのテキストボックスを、複数(例えば3つ)をまとめて1つのユーザーコントロールを作りました。
そのユーザーコントロールを、ホーム上に配置したとき、Tabキーではユーザーコントロール内でも順番に移動するのですが、Enterキー押下の場合は、ユーザーコントロール内の最初のテキストボックスの次にEnterを押下すると、ユーザーコントロールの2番目のテキストボックスにフォーカスが行かず、ユーザーコントロールを飛ばして、親ホーム上にある次のコントロールにフォーカスが飛びます。
なにかいい制御方法あるでしょうか、できれば、ユーザーコントロールの処理で対応して、親のホームのコードでは、メンテナンスフリーでEnterキーで順次進むようにしたいです。
ご教授ねがいます。
環境は、
Microsoft Visual Studio 2008
Version 9.0.30729.1 SP
Microsoft .NET Framework
Version 3.5 SP1です。
回答
-
特に何も記述していない場合 Enter キーの入力でフォーカスが移動することはないはずですが、フォーカス移動の処理は現状でどこにどのように書かれているのでしょうか?
一般的にはコンテナとなるコントロール(この場合なら UserControl)の ProcessDialogKey をオーバーライドして、該当キーのときにフォーカス移動処理を実装する、という形にすると思いますが。
すべての返信
-
特に何も記述していない場合 Enter キーの入力でフォーカスが移動することはないはずですが、フォーカス移動の処理は現状でどこにどのように書かれているのでしょうか?
一般的にはコンテナとなるコントロール(この場合なら UserControl)の ProcessDialogKey をオーバーライドして、該当キーのときにフォーカス移動処理を実装する、という形にすると思いますが。
-
すいません、もうひとつ問題が起きて、テキストボックス群のユーザーコントロールはうまくいったのですが、コンボボックスもユーザーコントロールに有る場合、コンボがクリックされなければ、ProcessDialogKey でEnter TAb変換でうまくいくのですが、
コンボをドロップダウンさせて、何か選択したじょうたいでEnterを押下すると、ProcessDialogKeyが走らずに、
OnKEyDownしかイベントがユーザーコントロールのコンボボックスに走らないため、フォーカスがユーザーコントロールから飛ばされてしまいます。
コンボをドロップダウンさせて、何か選択したじょうたいでEnterを押下する場合どうしたらいいでしょうか。