2

(その1) 動的に作成されるすべてのタブページに8個のチェックボックスを追加したい。以下を試しましたが、最後のタブページにチェックボックスが追加されます。すべてのタブ ページに 8 つのチェックボックスを追加する方法 (たとえば、10 個のタブ ページ)

(その2) 作成したチェックボックスのインデックスがわからないので、「checkbox.checked」条件でグループボックスをリンクする方法がわかりません。どんな助けでも本当に感謝します。

Dim chkbx As New CheckBox

For j = 1 To 10 '#10 tab pages considered
Form4.TabControl1.TabPages.Add(j)
Form4.TabControl1.TabPages(j).Text = "Folder" & j + 1
Form4.TabControl1.TabPages(j).Controls.Add(chkbx)
chkbx.Text = "folder1name "
chkbx.Size = New Size(220, 17)
Next (j)

ありがとう

4

2 に答える 2

1

AVDが言ったことに沿って、動的TabPageを割り当てるループ内にチェックボックスを作成します。コンボボックスを事前に作成するか、別のforループで動的に作成する必要があります。次に、Tagプロパティを使用して各チェックボックスに一意のIDを割り当て、それを使用して、CommonCheckedChangedイベントで変更されたIDを区別します。このようなもの。

Dim index As Integer = 0
For j = 1 To 10 '#10 tab pages considered 
    Dim startLocation As Point = New Point(10, 10)
    TabControl1.TabPages.Add(New TabPage)
    TabControl1.TabPages(j).Text = "Folder" & j + 1
    For x = 0 To 7
        Dim chkbx As New CheckBox
        TabControl1.TabPages(j).Controls.Add(chkbx)
        chkbx.Tag = index
        chkbx.Text = "FolderName"
        chkbx.Location = startLocation
        chkbx.Size = New Size(220, 17)
        AddHandler chkbx.CheckedChanged, AddressOf CheckBox_CheckedChanged
        startLocation.Y = startLocation.Y + 16
        index += 1
    Next
Next

CheckChangedイベント

Private Sub CheckBox_CheckedChanged(sender As System.Object, e As System.EventArgs)
    Dim cb As CheckBox = CType(sender, CheckBox)

    Select Case CInt(cb.Tag)
        Case 0

        Case 1

        Case 2

        Case 3

        Case .... 'Up to how ever many index's that you have

        Case Else

    End Select

End Sub
于 2012-09-27T03:38:12.853 に答える
1

forループのたびに CheckBox インスタンスを作成する

For j = 0 To 9 '#10 tab pages considered
  Dim chkbx As New CheckBox
  Form4.TabControl1.TabPages.Add(j)
  Form4.TabControl1.TabPages(j).Text = "Folder" & j + 1
  Form4.TabControl1.TabPages(j).Controls.Add(chkbx)
  chkbx.Text = "FolderName"
  chkbx.Size = New Size(220, 17)
  chkbx.Name="A" & j  <----- set unique name/key to each control
Next (j)

Controls.Find()メソッドを使用して の参照を取得しますcontrol

Dim name = "A0"
Dim controlArray = Me.Controls.Find(name, True)
If controlArray.Length <> 0  Then
   Dim chk As CheckBox = CType(controlArray(0), CheckBox)
   If Not IsNothing(chk) Then
       MsgBox(chk.Checked)
   End If
End If
于 2012-09-27T03:07:20.160 に答える