189 8069 5689

vb.net控件动态出现,vb动态加载控件

vb.net定义动态控件事件

给你个例子就知道了

为二七等地区用户提供了全套网页设计制作服务,及二七网站建设行业解决方案。主营业务为网站设计制作、网站设计、二七网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

Public Class Form1

'演示为动态添加的控件添加事件

Private WithEvents Tb As New TextBox '方法2必须这样写

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

' Dim Tb As New TextBox

Tb.Name = "Textbox1"

Tb.Text = "文本框1"

Controls.Add(Tb)

AddHandler Tb.KeyPress, AddressOf XX '方法1,移动鼠标触发

End Sub

Private Sub XX()

MsgBox("AddHandler方法")

End Sub

Private Sub ShowClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tb.Click '方法2,单击触发

MsgBox("Handles方法,你点击了" sender.name)

End Sub

End Class

vb.net动态添加控件问题

你还要把过程与控件事件绑定

AddHandler 控件.事件名,addressof 事件过程

RemoveHandler 这个是取消绑定

没发现自动生存的事件过程后面还有一个Hander button1.Click之类的,这就是所谓事件句柄。反而跟过程名没关系,改成阿猫阿狗也可以。

例外也可以像 Private WithEvents obj as ControlClass 这么声明控件变量,估计像vb6那样会在下拉列表中列出事件系列。

哎呀,说了半天跑题了。 ff不存在嘛多半不是它的作用域范围内,应该把ff变量定义在类中,而不是类中的某个过程中。

最好把代码添多一点,把ff部分也添出来看看。

VB.NET 如何引用动态生成控件?

似有控件遍历窗体控件集合,或在控件集合中查询该控件名字,公用控件直接名字

如何在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 动态控件 属性问题

布局方面,建议你用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 动态生成的控件,事件也动态加,怎么做呢?

你需要的应该是反射,类似如下,我测试通过的:

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控件动态出现,vb动态加载控件
本文路径:http://jkwzsj.com/article/hsdgch.html

其他资讯