フォームでコントロールのフォーカス移動を取得したい。

解決


hiroko  2008-10-08 03:19:09  No: 140599

たびたびすいません。
VisualBasic.NET2008で開発しています。

今回フォーム上にテキストボックスを
約30個配置することになりまして、
それらのテキストボックスに入力を行った後、
Leaveイベントにて、
毎回ある計算ルーチンを呼び出そうと思っています。
すべてのテキストボックスのLeaveイベントに
計算ルーチンのコールを書くのも面倒なので、
一つのテキストボックスにLeaveイベントを作っておき、
他のテキストボックスのLeaveイベントをそれに指定する方法も
あるでしょうが、出来たら
フォームのイベントで子コントロールのフォーカス移動を
取得できたら、1度ですむのではないかと考えました。

そんなフォームのイベントってありますか?

hiroko


魔界の仮面弁士  2008-10-08 03:35:50  No: 140600

Handles 指定されたメソッドを多数用意する代わりに、
AddHandler で指定するようにするとか。

Sub Form1_Load(……
  For Each Txt As TextBox In 『30個のTextBox群』
    AddHandler Txt.Leave, AddressOf Txt_Leave
  Next
End Sub


のん  URL  2008-10-09 02:10:24  No: 140601

Private Sub Form1_KeyDown(・・・) Handles Me.KeyDown
        If e.KeyCode = Keys.Enter Then
            Button1.Focus()
        End If
  End Sub

も大丈夫でした。


のん  2008-10-09 02:27:39  No: 140602

うわわ><
>Leaveイベントにて、
毎回ある計算ルーチンを呼び出そうと思っています。

見忘れましたorz


hiroko  2008-10-11 23:28:43  No: 140603

魔界の仮面弁士 、のん様
ありがとうございます。

AddHandlerという方法を初めて知りました。
結局、作成の手間を考えて、
TextBox1だけにLeaveイベントを作成し、
残り29個のテキストボックスを複数選択して、
そのLeaveイベントにTextBox1_Leaveを指定する方法を取りました。
VB6でのコントロール配列が.NETで無くなったのが残念です。


KIJI  2008-10-12 05:39:10  No: 140604

>VB6でのコントロール配列が.NETで無くなったのが残念です。

作る方法が変わっただけです。

動的にコントロールの配列を作成する
http://dobon.net/vb/dotnet/control/buttonarray.html


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加