オブジェクトのTableIndexについて

解決


かっつん  2005-04-22 11:21:11  No: 121163  IP: [192.*.*.*]

お願いがございます。
VB.NETでフォームのボタンをクリックするとそれまでフォーカスを持っていたオブジェクトのTableIndexを取得したいのですが、どのようにコードを書けばいいのかわかりません。
教えてください。

編集 削除
特攻隊長まるるう  2005-04-22 14:27:14  No: 121164  IP: [192.*.*.*]

>それまでフォーカスを持っていたオブジェクト
…の対象となるのがフォームの上に配置した全てのコントロールなら、
ベタなやり方として、全てのコントロールの Control.Enter イベント
で、そのコントロールの参照を Control クラスの変数に格納しておく
事でしょう。(ただし、当然ながら、クリックするボタンの Enter イベント
は除きます)

>TableIndex
→ TabIndex ?

[VB.NET]
    Private myControl As Control
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show(Me.myControl.Name & " : " & Me.myControl.TabIndex)
    End Sub
    Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
        Me.myControl = Me.ActiveControl()
    End Sub
    Private Sub TextBox2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Enter
        Me.myControl = CType(sender, Control)
    End Sub
    Private Sub TextBox3_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.Enter
        Me.myControl = Me.TextBox3
    End Sub

編集 削除
特攻隊長まるるう  2005-04-22 14:38:50  No: 121165  IP: [192.*.*.*]

あ、一応ボタンクリックのコードは以下に修正しておいて下さい。
[VB.NET]
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Me.myControl Is Nothing Then
            MessageBox.Show("何も選択されていませんでした。")
        Else
            MessageBox.Show(Me.myControl.Name & " : " & Me.myControl.TabIndex)
        End If
    End Sub

編集 削除
かっつん  2005-04-25 13:06:53  No: 121166  IP: [192.*.*.*]

返事が遅くなりました。
特攻隊長まるるうさん、ありがとうございました!

編集 削除