今天完成类似事情的更简单方法是将所有这些控件放在一个公共父控件中。这个父级可以是一个分组框、一个面板,甚至是表单本身。
因此,例如,如果表单上的所有复选框都需要编入索引,则无一例外,您不必做任何特别的事情。如果只有一个复选框不同,则您需要该复选框具有与索引复选框不同的父控件。在这种情况下,您可以在复选框组下分层面板控件,也可以在不同的单个复选框下分层面板控件。要么会起作用。
稍后,您仍然无法通过索引访问这些复选框,但您可以将它们视为一个集合。您可以这样做:
For Each box As CheckBox In Me.Controls.OfType(Of Checkbox)()
'Do something with each checkbox
Next
Run Code Online (Sandbox Code Playgroud)
或者,如果您想知道检查了哪些:
Dim checkedBoxes As IEnumerable(Of Checkbox) = Me.Controls.OfType(Of Checkbox)().Where(Function(b) b.Checked)
Run Code Online (Sandbox Code Playgroud)
如果你真的想要一个复选框数组,你可以使用这种技术来获得一个。只需将这样的代码放在表单的加载事件中:
Dim checkBoxes() CheckBox = Me.Controls.OfType(Of CheckBox)().OrderBy(Function(b) b.Name).ToArray()
Run Code Online (Sandbox Code Playgroud)