Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在vb.NET2005中制作按钮数组_Vb.net_Arrays_Controls - Fatal编程技术网

如何在vb.NET2005中制作按钮数组

如何在vb.NET2005中制作按钮数组,vb.net,arrays,controls,Vb.net,Arrays,Controls,您好:)我只是想问一下如何在vb.NET2005中创建一个按钮数组。在vb6中,这似乎非常不同,因为在vb6中,您只需在其属性上添加索引,但在vb.net中没有索引属性。是否可以像在vb6中复制和粘贴表单一样在表单上进行设计来实现此功能?与vb6不同,.NET允许您创建常规控件数组,因此不需要vb6的控件集合 只需使用一个数组或列表(控件),用控件和presto!填充它!,你完了 如果要向这些控件添加事件处理程序,请使用 Windows窗体设计器不再支持控件数组(与VB6的窗体设计器不同)——这

您好:)我只是想问一下如何在vb.NET2005中创建一个按钮数组。在vb6中,这似乎非常不同,因为在vb6中,您只需在其属性上添加索引,但在vb.net中没有索引属性。是否可以像在vb6中复制和粘贴表单一样在表单上进行设计来实现此功能?

与vb6不同,.NET允许您创建常规控件数组,因此不需要vb6的控件集合

只需使用一个数组或
列表(控件)
,用控件和presto!填充它!,你完了

如果要向这些控件添加事件处理程序,请使用


Windows窗体设计器不再支持控件数组(与VB6的窗体设计器不同)——这是有道理的:如果您有控件数组,它本身就是动态的,因此无法在设计时有意义地创建它。它的大小在运行时根据所需控件的实际数量动态地增长和收缩。

VB.NET默认情况下不使用控件数组。这是因为事件的处理方式与VB6不同

如果我没记错的话,这就是为控件数组编写代码的方法,比如
CommandButton
数组

Private Sub Buttons_Click(index As Integer)
    Select Case index
        Case 1
            'write some code here'
    End Select
End Sub
然后VB6编译器将解析文件中每个子文件的名称,并将它们分配给相应控件的事件。因此,上面的子例程将自身附加到表单上名为Buttons的每个按钮上,您可以通过检查index参数来确定单击的按钮

在VB.NET中,事件以不同方式“附加”到控件。
可以使用语句手动执行,也可以使用关键字自动执行

当您从表单设计器向控件分配事件时,IDE使用
Handles
关键字将每个控件连接到它们的事件处理程序。因此,你最终会得到这样的结果:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles Button.Click
    'your code goes here'
End Sub
使用此方法,您不需要像VB6中那样使用控件数组。您只需连接更多的按钮点击,或者在语句末尾添加任何控件的点击,如下所示:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
  Button1.Click, Button2.Click, Button3.Click, ListBox.Click
    'your code goes here'
End Sub
可以看出,您只需添加控件的名称(例如Button2),然后在其后添加
。单击
,以便将控件的单击事件“挂钩”到子例程

接下来的问题是,您如何找到单击了哪个控件(按钮)?
答案很简单,测试
sender
参数

在.NET中,引发事件的控件通常位于
sender
参数中。基于上面的代码,我们将有如下内容:

Private Sub Button_Click(sender As Object, e As System.EventArgs) Handles _
  Button1.Click, Button2.Click, Button3.Click, ListBox.Click

    If sender Is Button1 Then
        'do something'
    ElseIf sender Is Button2 Then
        'do another thing'
    ElseIf sender Is Button3 Then
        'do yet another thing'
    Else
        'do something different for the ListBox'
    End If
End Sub
如果您已经了解并理解了这一点,您将开始意识到为什么我们不再在VB.NET中使用控件数组,或者在一般情况下,.NET中不再使用控件数组


如果您还有任何问题,请通知我。干杯

此外,表单中还有一组控件(me.controls),其中包含当前表单中所有控件的层次列表。@Hohntotewo:很高兴能为您提供帮助。现在继续并接受答案(单击答案旁边的复选标记)。否则,对两个答案都投赞成票。