vb.net - 控制数组发生了什么

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

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

最佳答案

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

因此,例如,如果您的表单上的所有复选框都需要编入索引,毫无异常(exception),您不必做任何特别的事情。如果只有一个复选框不同,则您需要该复选框具有与索引复选框不同的父控件。在这种情况下,您可以在复选框组下分层一个面板控件,或者您可以在不同的单个复选框下分层一个面板控件。要么会工作。

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

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()

关于vb.net - 控制数组发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18832786/

相关文章:

asp.net - 允许预编译的 Visual Studio 网页可更新与不可更新之间有什么区别?

mysql - 得到一个异常,说参数已经定义

c# - 如何从 C# 或 VB.Net 使用 Win32 'DwmSetIconicThumbnail'?

c# - 创建 UTF8 文本文件而不是 ANSI

mysql - 无法使用 VB6 连接到远程 MySQL (10060)

c# - 无法读取 GridView 中行的前两列

c++ - g++ 和 VS2012 中的正则表达式

c# - .Net cookie 不断返回,过期时间为零

windows - 如何在用户不活动一段时间后锁定应用程序?

vb6 - 在运行时将项目添加到 ListView