2013-03-20 73 views
2

我知道这个问题已经回答之前,但我似乎无法得到一个答案,将与我想要的是能够检查我的动态创建的复选框已检查,我需要能够单独检查每个复选框。检查动态创建的复选框状态

这里是我创建的复选框码

Private Sub CreateCheckbox(ByVal x As Integer, ByVal y As Integer, text As String, ByVal id As Integer) 
    Dim btnYes As System.Windows.Forms.CheckBox 
    btnYes = New System.Windows.Forms.CheckBox 
    btnYes.AutoSize = True 
    btnYes.TabStop = True 
    btnYes.Name = "CheckBox" + id 
    btnYes.TabIndex = id 
    btnYes.Parent = Panel1 
    btnYes.Size = New System.Drawing.Size(81, 17) 
    btnYes.Location = New System.Drawing.Point(x, y) 
    btnYes.TabIndex = 1 
    btnYes.Text = text 
    Button1.TabIndex = Button1.TabIndex + 1 
    Me.Panel1.Controls.Add(btnYes) 
End Sub 

我需要这样的东西

for i as integer = 0 to id step 1 
if checkbox(i).checked = true then 
    'Do Something 
end if 
next 

回答

0

你应该为你的动态创建checkboxes添加handler,给定的代码将创建一个check box,并通过它会为相同的事件处理程序添加checkedChanged

Private Sub CreateCheckbox(ByVal x As Integer, ByVal y As Integer, text As String, ByVal id As Integer) 
    Dim btnYes As System.Windows.Forms.CheckBox 
    btnYes = New System.Windows.Forms.CheckBox 
    ............... 
    ............... 

    Me.Panel1.Controls.Add(btnYes) 

    'Now here add a common handler for your created checkbox 
    AddHandler btnYes.CheckedChanged addressOf CommonCheckedChangeHandler 
End Sub 

以下过程将根据我们上面添加的事件(checkedchanged)进行调用。我们可以通过使用参数sender

访问特定复选框
private sub CommonCheckedChangeHandler(ByVal sender As Object, ByVal e As System.EventArgs) 
    ' This method will be invoked when your dynamically 
    ' created check box's checked state got changed 
End sub 

编辑1:

使用下面的代码panel内遍历检查您checkboxes

For Each chkBox In Panel1.Controls.OfType(Of CheckBox)() 
    'Check here whether your check boxes are checked true/false 
Next 

编辑2 :

OfType属于LINQ,如果你不想在上面试试这个代码

for i as integer = 0 to id step 1 
if Ctype(panel1.controls("CheckBox" & i), checkbox).checked = true then 
    'Do Something 
end if 
next 
+0

好吧,我想你的方法,但我如何才能不是当复选框被选中它来执行代码,但是当按下按钮。即按下按钮,它会检查检查哪些复选框并执行代码。 – crackruckles 2013-03-20 07:01:28

+0

@crackruckles根据您的要求使用我的新更新。 – 2013-03-20 07:22:20

+0

我得到错误'OfType'不是'System.Windows.Forms.Control.ControlCollection'的成员。这就是为什么我问这个问题,不管我尝试什么,我不能得到一个有效的解决方案。 – crackruckles 2013-03-20 07:32:58