自助推荐
立即入驻

VB.net 如何动态创建控件(对象)并进行事件绑定

博客3年前更新 桔子雨
2,137 00
VB.net 如何动态创建控件(对象)并进行事件绑定

我在开发中遇到了如题的问题,百度了不少资料,最终解决并理解了过程,对.net的认识加深了一步,实例化对象(New关键字)相当于一个人刚出生,他有人的一切特征,但是缺少社会属性(比如,名字、身高等)。new完之后把他加入一个集合(相当于国籍)这样查找起来就比较容易。我在VS2022操作的,具体操作:

1、首先新建项目,创建如下窗体和控件,form1、Panel1、listbox1、button1。如下图

VB.net 如何动态创建控件(对象)并进行事件绑定

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 如何动态创建控件(对象)并进行事件绑定

另外还有加入集合的方式来实现,我没测试过。传送门 在VB.NET中使用控件数组 - 夏、初心

© 版权声明

相关文章