Back to Top

プログラムの覚書

Category: コントロール

VB.NETコントロール検索

コントロールを検索する方法はさまざまな方法があります。その例を記載します。

特定のコントロール検索

'Panel内のコントロール(子コントロール)は検索できない
'Panel内を検索するには、Meをパネルオブジェクトにする
Dim ctrl As Control = Me.Controls("TextBox1")
If ctrl IsNot Nothing Then
    MessageBox.Show("コントロール有り")
End If

または

'Panel内のコントロール(子コントロール)も検索できる
Dim ctrls As Control() = Me.Controls.Find("TextBox1", False)
If 0 < ctrls.Length Then
    DirectCast(ctrls(0), TextBox).Text += "***"
End If

複数のコントロール検索

[方法1]
'ボタンのコントロールを検索する
'子コントロールは検索できない
For Each btn As Button In Me.Controls.OfType(Of Button)()
    btn.Text = "***"
Next

-------------------------------------------------------------------------
[方法2]
'指定コントロールを検索する
Dim myButtons = {Button1, Button2, Button3, Button4, Button5, Button6}
For Each btn In myButtons
    btn.Text = "***"
Next

-------------------------------------------------------------------------
[方法3]
For no As Integer = 1 To 10
    Dim btns = Me.Controls.Find("button" & no, True)
    If btns.Length > 0 Then
        btns(0).Text = "***"
    End If
Next

全コントロール検索

Public Function getAllControls(ByVal top As Control) As Control()
    Dim ctrls As ArrayList = New ArrayList
    For Each c As Control In top.Controls
        ctrls.Add(c)
        ctrls.AddRange(getAllControls(c))
    Next
    Return DirectCast(ctrls.ToArray(GetType(Control)), Control())
End Function


---------------------------------------------------------------------------
[呼び出し側]

Dim ctrls As Control() = getAllControls(Me)

 

VB.NETコントロール(Control)

コントロールの基本的な機能を説明

フォーカスを設定する

Me.TextBox1.Focus()

フォーカスがあるか判断する

If Me.TextBox1.Focused Then
    MessageBox.Show("TextBox1にフォーカスがあり")
End If

コントロールを無効にする

Me.TextBox1.Enabled = False

コントロールを非表示にする

Me.TextBox1.Visible = False

または

Me.TextBox1.Hide()

[Tab]キーによってフォーカス遷移しないようにする

Me.TextBox1.TabStop = False

タブの移動順位を変更する

Me.TextBox1.TabIndex = 0