- - PR -
カスタムコントロールのフォーカス移動について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-02-05 13:51
VB.NET2003でカスタムコントロールを作成したのですが、
そのコントロールを貼り付けたフォーム内でのフォーカス移動が 思うようにいきません。 どなたかお教え願えませんでしょうか? <作成したコントロール> TextBoxを3つ並べたものを1つのコントロールとして作成 親コントロール名:UserControl 子コントロール名:TextBox1、TextBox2、TextBox3 <実現したい動作> あるキー(→キーなど)を押したときに次の動作を実現させる 1.カスタムコントロール内では、 TextBox1→TextBox2→TextBox3の順にフォーカスを移動させる 2.フォーム内ではコントロールごとにフォーカスを移動させる Button1→UserControl→(1の内部フォーカス移動)→Button2の順 1は子コントロールの各TextBoxのLostFocus時に、 GetNextControlで指定することで実現できました。 ただし、2の方がうまくいきません。 TextBox3のNextControlがTextBox1になってしまい、 カスタムコントロールの内部でフォーカスが循環してしまいます。 調べてみると、GetNextControlメソッドでは、 子コントロールのタブオーダーしか認識できないようです。 しかし、Tabキーを押すとうまく動作します。(なぜだろう、、、) このTabキーでの動作を、他のキー操作で実現する方法はないのでしょうか??? |
|
投稿日時: 2004-02-06 19:44
自己解決の報告です。
調べたところ、親コントロールはフォーカスを持たないようです。 ですから、SelectNextControlメソッドで次のコントロールを アクティブにしようとすると、子コントロール内でフォーカスが 循環してしまうみたいです。 解決策としては、次のようなことを考えました。 1.3つ目のTextBoxでEnterキーが押されたときに 新たな自作イベントを発生させる 2.カスタムコントロールを貼り付けたフォーム側でこのイベントが発生したときに、 次のコントロールにフォーカスを移す (コントロール名は直打ち) なんとかこれで乗り切りました。 ただし、次のコントロール名をプログラム内で直打ちするので、 汎用性のあるコントロールではないですね。 |
1
