none
ユーザーコントロールのEnterキー移動制御 RRS feed

  • 質問

  • 複数のユーザーコントロールのテキストボックスを、複数(例えば3つ)をまとめて1つのユーザーコントロールを作りました。

    そのユーザーコントロールを、ホーム上に配置したとき、Tabキーではユーザーコントロール内でも順番に移動するのですが、Enterキー押下の場合は、ユーザーコントロール内の最初のテキストボックスの次にEnterを押下すると、ユーザーコントロールの2番目のテキストボックスにフォーカスが行かず、ユーザーコントロールを飛ばして、親ホーム上にある次のコントロールにフォーカスが飛びます。

    なにかいい制御方法あるでしょうか、できれば、ユーザーコントロールの処理で対応して、親のホームのコードでは、メンテナンスフリーでEnterキーで順次進むようにしたいです。

    ご教授ねがいます。

    環境は、

    Microsoft Visual Studio 2008
    Version 9.0.30729.1 SP
    Microsoft .NET Framework
    Version 3.5 SP1

    です。

     

    2010年6月1日 8:05

回答

  • 特に何も記述していない場合 Enter キーの入力でフォーカスが移動することはないはずですが、フォーカス移動の処理は現状でどこにどのように書かれているのでしょうか?

    一般的にはコンテナとなるコントロール(この場合なら UserControl)の ProcessDialogKey をオーバーライドして、該当キーのときにフォーカス移動処理を実装する、という形にすると思いますが。

    • 回答としてマーク 山本春海 2010年6月1日 8:48
    • 回答としてマークされていない TAKAPI 2010年6月1日 23:59
    • 回答としてマーク TAKAPI 2010年6月3日 0:51
    2010年6月1日 8:31

すべての返信

  • 特に何も記述していない場合 Enter キーの入力でフォーカスが移動することはないはずですが、フォーカス移動の処理は現状でどこにどのように書かれているのでしょうか?

    一般的にはコンテナとなるコントロール(この場合なら UserControl)の ProcessDialogKey をオーバーライドして、該当キーのときにフォーカス移動処理を実装する、という形にすると思いますが。

    • 回答としてマーク 山本春海 2010年6月1日 8:48
    • 回答としてマークされていない TAKAPI 2010年6月1日 23:59
    • 回答としてマーク TAKAPI 2010年6月3日 0:51
    2010年6月1日 8:31
  • ProcessDialogKeyで、Keys.EnterだったらKeys.Tabに変換して、

    base.ProcessDialogKey(Keys.Tab)こんな感じで、成功しました。ありがとうございました。

    • 回答としてマーク TAKAPI 2010年6月1日 8:45
    • 回答としてマークされていない TAKAPI 2010年6月2日 0:05
    2010年6月1日 8:45
  • すいません、もうひとつ問題が起きて、テキストボックス群のユーザーコントロールはうまくいったのですが、コンボボックスもユーザーコントロールに有る場合、コンボがクリックされなければ、ProcessDialogKey でEnter TAb変換でうまくいくのですが、

    コンボをドロップダウンさせて、何か選択したじょうたいでEnterを押下すると、ProcessDialogKeyが走らずに、

    OnKEyDownしかイベントがユーザーコントロールのコンボボックスに走らないため、フォーカスがユーザーコントロールから飛ばされてしまいます。

    コンボをドロップダウンさせて、何か選択したじょうたいでEnterを押下する場合どうしたらいいでしょうか。

    2010年6月2日 0:04