vb.net转存动态控件的简单介绍
我知道在VB和VB.net中怎样添加动态控件,可是我添加的这些控件怎样添加相应的事件呢?
Dim Text() As Object
创新互联建站服务项目包括宽城网站建设、宽城网站制作、宽城网页制作以及宽城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,宽城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到宽城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Private Sub Form_Load()
Dim i As Integer
Dim nTop As Long
ReDim Text(1 To 10)
For i = 1 To 10
Set Text(i) = Controls.Add("VB.TextBox", "Text1" CStr(i))
Text(i).Height = 300
Text(i).Top = nTop
Text(i).Visible = True
nTop = nTop + 30 * 15
Next i
End Sub
添加动态控件。你可以自己试试看。 form1上什么都不加运行这个程序后会发现自动生成了10个text控件
如何在vb.net里面动态添加控件
Private WithEvents NewTextBox As TextBox
'通过使用WithEvents关键字声明一个对象变量为新的命令按钮
Private Sub Command1_Click()
If NewTextBox Is Nothing Then
Set NewTextBox = Controls.Add("VB.TextBox", "cmdNew", Form1)
NewTextBox.Move 200, 200
NewTextBox.Width = Form1.Width - 450
NewTextBox.Height = Form1.Height - 1400
NewTextBox.Visible = True
End If
End Sub
Private Sub Command2_Click()
If NewTextBox Is Nothing Then
Exit Sub
Else
Controls.Remove NewTextBox
Set NewTextBox = Nothing
End If
End Sub
vb.net 动态生成的控件,事件也动态加,怎么做呢?
你需要的应该是反射,类似如下,我测试通过的:
Imports System.Reflection
Public Class Form1
Public Sub MMMToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MMMToolStripMenuItem.Click
MsgBox("menu click")
End Sub
'在按钮事件处理里面通过反射名称调用相应菜单事件
Public Sub CallEventMethod(sender As Object, e As EventArgs)
Dim b As Button = sender '获取点击的按钮
'拼接菜单事件名称
Dim MethodName As String = b.Name "ToolStripMenuItem_Click"
Dim t As Type = Me.GetType
Dim m As MethodInfo = t.GetMethod(MethodName)
'反射方法
m.Invoke(Me, New Object() {Nothing, Nothing})
End Sub
'动态生成了按钮
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim btn As New Button
btn.Location = New Point(100, 100)
btn.Name = "MMM" '关键
btn.Text = "MMM"
'注册事件
AddHandler btn.Click, AddressOf Me.CallEventMethod
Me.Controls.Add(btn)
End Sub
End Class
VB.NET 动态控件 属性问题
布局方面,建议你用FlowLayoutPanel,不用手工控制控件位置了。假设有一个FlowLayoutPanel1。
先在窗体类中建一个控件的集合:
Dim
TextBoxes
As
New
List(Of
TextBox)
在button1的
Click事件
中写:
For
i
=
1
To
5
'5是每次加入的数量
Dim
newTextBox
As
New
TextBox()
'newTextBox.Size
=
New
Size(100,20)
'
TextBoxes.Add(newTextBox)
'加入我们的集合中
FlowLayoutPanel1.Controls.Add(newTextBox)
'加到窗体的FlowLayoutPanel中去
Next
i
然后button2的Click事件中:
For
Each
itemTextBox
As
TextBox
In
TextBoxes
'这里的itemTextBox.Text就代表每个TextBox里的文本
'如果你需要清空,调用TextBoxes.Clear()和FlowLayoutPanel.Controls.Clear()即可
Next
vb.net动态添加控件,并且绑定了一些事件,这些事件只能对最新生成的控件做修改,之前生成的无法修改
比如说这样添加的计时器:
Dim Timer1 As New Timer
你要在合适的地方开始,比如窗体Load事件中,这样:
Timer1.Interval = 1000 '单位毫秒,1000毫秒=1秒
Timer1.Enabled = True '启用计时器
然后在代码窗口上方下拉列表里选择Timer1的Tick事件,自动添加代码:
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
End Sub
这是计时器触发的事件,每秒触发一次,在这里面输入循环判断是否有日程即可。提示:你可以用Now对象获取当前的日期和时间。
网站标题:vb.net转存动态控件的简单介绍
文章链接:http://ybzwz.com/article/hoejdj.html