0

VB.net でショッピング システム用のプログラムを作成しようとしています。データベースを読み込んで、フォームにアイテムを入力します。アプリは、スクロール可能なパネル内のラベルに製品名などの情報を表示します。オブジェクトを作成し、実行時にテキストなどの値を割り当てます。コードにループを使用しています。

vb 6 を使用していた場合、制御配列があり、インデックスとカウンターを使用してデータを表示します。vb.netでこれを行っているので、それを行う方法がありません..解決策はありますか?

4

4 に答える 4

6

VB.NET は、VB6 と同じ意味で、コントロール配列をサポートしていません。ただし、同様のことはできます。たとえば、複数のコントロールからのイベントを同じメソッドで処理したい場合は、次のようにできます。

Private Sub MyClickHandler(sender As Object, e As EventArgs) Handles _
    Button1.Click, _
    Button2.Click, _
    Button3.Click

    Dim buttonThatWasClicked As Button = CType(sender, Button)
    ' Do something...
End Sub

ループできるコントロールの配列を作成したい場合は、次のように実行できます。

Dim myTextBoxes() As TextBox = New TextBox() { TextBox1, TextBox2, TextBox3 }
For i As Integer = 0 to myTextBoxes.Length - 1
    myTextBoxes(i).Text = ...
Next

または、コントロールに一貫した名前を付ける場合は、フォームのControlsコレクションで名前で見つけることができます。たとえば、TextBox1TextBox2、という名前の 3 つのテキスト ボックスがある場合TextBox3、次のようにそれらをループできます。

For i As Integer = 1 to 3
    Dim t As TextBox = CType(Me.Controls("TextBox" & i.ToString()), TextBox)
    t.Text = ...
Next
于 2013-02-09T15:09:48.947 に答える
2

VB.NET には、コントロール配列自体がありません。

ただし、コントロールの配列作成して、配列の各要素にコントロールを割り当てることはできますが、List(Of Control).

これにより、コレクションをループできます。

于 2013-02-09T14:32:29.973 に答える
1

VB.NET には Control 配列はありません。ただし、 Panel.Controlsコレクションを反復処理することはできます。すべてのコントロールがそのコレクションにあります (それらがすべて同じパネルにある場合)。

    For i = 0 To Panel1.Controls.Count - 1

        Dim control = Panel1.Controls(i)

        'Do something with control..

    Next
于 2013-02-09T15:02:47.063 に答える
1

まず、これにグリッドを使用できない理由はありますか? -それは明らかな解決策です(VB6でもそうであったように)。

到着予定日。. .ただし、必要に応じて、このコード スニペットは一連のラベルをフォームに追加します。これを変更する必要があります。たとえば、for next ループを for each r に置き換えて、mydataset.mydatatable 内の mydataset.mytabledatarow などにします。

   For i = 1 To 10
        Dim l As New Label
        l.Location = New System.Drawing.Point With {.x = 10, .y = i * 30}
        Me.Controls.Add(l)
        l.Text = "test " & i.ToString
   Next
于 2013-02-09T21:18:00.487 に答える