网站建设资讯

NEWS

网站建设资讯

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://cdweb.net/article/hoejdj.html