控制数组发生了什么

时间:2013-09-16 16:18:50

标签: vb.net visual-studio-2012 vb6 indexing

几年前,我曾经使用 Visual Basic 6 编程,我能够创建具有相同名称的对象,然后通过索引区分它们。 例如,我们可以使用不同的索引创建TextBox1和另一个TextBox1。 现在这个功能已不再可用! 目前,我正在使用 Visual Studio 2012 。 无论如何操纵VS2012再次启用该功能,或者是否有类似的功能,因为它确实很有帮助。

2 个答案:

答案 0 :(得分:4)

今天完成类似事情的更简单方法是将所有这些控件放在一个公共父控件中。此父级可以是组框,面板,甚至是表单本身。

因此,如果您的表单上的所有复选框都需要编入索引,毫无例外,您不必执行任何特殊操作。如果只有一个复选框不同,则您需要该复选框以具有与索引复选框不同的父控件。在这种情况下,您可以在复选框组下面对面板控件进行分层,或者您可以在不同的单个复选框下对面板控件进行分层。要么工作。

稍后,您仍然无法通过索引访问这些复选框,但您可以将它们视为集合。以下是您可以这样做的方法:

For Each box As CheckBox In Me.Controls.OfType(Of Checkbox)()
    'Do something with each checkbox
Next

或者如果你想知道检查了哪些:

Dim checkedBoxes As IEnumerable(Of Checkbox) = Me.Controls.OfType(Of Checkbox)().Where(Function(b) b.Checked)

如果你真的想要一个复选框数组,你可以使用这种技术来获得一个。只需将这样的代码放在表单的加载事件中:

Dim checkBoxes() CheckBox = Me.Controls.OfType(Of CheckBox)().OrderBy(Function(b) b.Name).ToArray()

答案 1 :(得分:3)

现在可怕的痛苦。

MSDN现在涵盖了这个主题:http://msdn.microsoft.com/en-us/library/aa289500%28v=vs.71%29.aspx

VB6万岁!