我在开发中遇到了如题的问题,百度了不少资料,最终解决并理解了过程,对.net的认识加深了一步,实例化对象(New关键字)相当于一个人刚出生,他有人的一切特征,但是缺少社会属性(比如,名字、身高等)。new完之后把他加入一个集合(相当于国籍)这样查找起来就比较容易。我在VS2022操作的,具体操作:
1、首先新建项目,创建如下窗体和控件,form1、Panel1、listbox1、button1。如下图
2、复制如下代码
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For i = 1 To 10
Dim Lanmu As New Label '实例化一个label对象,从vb6过来可以简单理解为创建一个label控件
Me.Panel1.Controls.Add(Lanmu) '添加到Panel1这个控件集合中,可以理解为放到Panel1这个控件里
'对新创建的实例化对象初始化一些值
Lanmu.Text = i
Lanmu.Left = 10
Lanmu.Top = i * 30
Lanmu.Name = "Label" & i '因为是实例化对象,所以可以命名,不赋值则为空,就像一个刚出生的婴儿还没有名字,不会报错
AddHandler Lanmu.Click, AddressOf Lanmu_Click '添加click事件,其他事件类推
Next
'在listbox1中验证动态添加了哪些控件
For j = 0 To Me.Panel1.Controls.Count - 1
ListBox1.Items.Add(Me.Panel1.Controls(j).Name)
Next
End Sub
Private Sub Lanmu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) '代码中预置Lanmu_Click事件
MsgBox(sender.Text,, "提示") '点击哪个动态创建的对象sender就是哪个对象,可以理解为一个控件,可以直接设置使用他的属性值
End Sub
End Class
3、运行查看效果
另外还有加入集合的方式来实现,我没测试过。传送门 在VB.NET中使用控件数组 - 夏、初心