1

心配するコントロール/変数が 200 を少し下回る大きなウィンドウがあります。それらの多くは似ているので、それぞれを個別に繰り返し呼び出す代わりに、それらの名前を連結できるかどうか疑問に思っています。

私は例を作ります:

気になるデータは赤、オレンジ、黄、緑、青の5つ。

これらのそれぞれには、表示する必要があるラベル、表示する必要があるテキストボックス、およびテキストボックス内のテキストを含む文字列があります。

lblRed.Visible = True
txtRed.Visible = True
strRed = txtRed.Text

これらの 5 つのデータのすべてに対してこれをリストする代わりに、これらの変数名を連結できるループを介してある種の配列を作成する方法はありますか?

Dim list As New List(Of String)(New String() {"Red", "Orange", "Yellow", "Green", "Blue"})
Dim i As Integer = 0
Do while i < list.count
  lbl + list(i) + .Visible = True
  txt + list(i) + .Visible = True
  str + list(i) = txt + list(i) + .Text
  i = i+1
Loop

上記のコードが機能しないことはわかっていますが、私がやりたいことの基本的な考え方を説明したいと思います。これは実行可能に見えますか?

4

3 に答える 3

1

http://msdn.microsoft.com/en-us/library/7e4daa9c(v=vs.71).aspx

コントロール コレクションの使用:

    Dim i As Integer
    i = 1
    Me.Controls("Textbox" & i).Text = "TEST"

それで

Me.controls("lbl" & list(i)).Visible = true

項目を連結する場合、「+」は整数ではなく文字列で機能することに注意してください。連結するときは常に「&」を使用したい場合があります

于 2013-07-10T18:40:39.353 に答える
0

もう 1 つの方法は、コントロールの種類ごとに select-case ブロックを使用することです。このようなもの:

Private Sub EnableControls()
    For Each c As Control In Me.Controls
        Select Case c.GetType
            Case GetType(TextBox)
                c.Visible = True
                Select Case c.Name.Substring(3)
                    Case "Red"
                        strRed = c.Text
                    Case "Orange"
                        strOrange = c.Text
                    Case "Yellow"
                        'and so on
                End Select
            Case GetType(Label)
                c.Visible = True
        End Select
    Next
End Sub
于 2013-07-10T19:02:58.500 に答える