所以我有一个简洁的小功能,我用它来确保只能在GroupBox中检查一个复选框。
这就是它的样子......
Private Sub ToggleCheckBoxOnEntry(sender As Object, e As EventArgs)
'This handles mutually exclusivity for the check boxes so that only one is ever allowed to be checked
Static CurrentlySelectedbox As CheckBox
If CType(sender, CheckBox).Checked Then
CurrentlySelectedbox = sender
End If
For Each cntrl As CheckBox In gbxReports.Controls
If cntrl.Checked AndAlso cntrl.Name <> CurrentlySelectedbox.Name Then
cntrl.Checked = False
End If
Next
End Sub
对于每个checkBox_CheckChanged,我都包含这一行......
Private Sub chkReports_CheckedChanged(sender As Object, e As EventArgs)
ToggleCheckBoxOnEntry(sender, e)
End Sub
所以我拥有这个看起来很棒的组合框,大约有10个报告,而且效果很好。当我尝试为其中一个提取包含一个组合框时,我会让用户从下拉列表中选择一些内容并将其用作参数。我不想将它包含在GroupBox之外(除非没有办法解决我的问题),但是,如果我将其包含在其中,我会收到错误..
无法将类型为“System.Windows.Forms.ComboBox”的对象强制转换为类型 'System.Windows.Forms.CheckBox'。
我有办法从循环中排除某些控件,例如
For each cntrl as CheckBox in gbxReports.controls // except comboboxes/ or only checkboxes??
我在组框中可能拥有的唯一控件是复选框和组合框。
答案 0 :(得分:5)
为什么不具体说明你想要循环而不是混合控制:
For Each chexkb As Checkbox In Controls.OfType(Of Checkbox)()
'do the loop just on the check boxes
Next