vb.net动态控件 vbs使用窗体控件

如何在 vb.net 为动态生成的控件添加事件并传递数据

'把图片的声明放在外面,类里面过程外面,而且要用As,不然等会儿没法用

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站建设、大名网络推广、成都小程序开发、大名网络营销、大名企业策划、大名品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供大名建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

Dim myPicture As New System.Windows.Forms.PictureBox()

'动态生成的控件,加一行

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

Me.Panel3.Controls.Add(myPicture)

myPicture.Size =New System.Drawing.Size(115, 160)

myPicture.TabStop =False

myPicture.Name ="p"

myPicture.Cursor = Cursors.Hand

AddHandler myPicture.Click, AddressOf mypic_Click '添加事件

AddHandler returnid, AddressOf idReturned '绑定事件和过程

End Sub

'再来个事件,放在声明的地方,就是类里面、过程外面

Private Event returnid(ByVal id As String) '这个事件可以传递值哦~

'普通的单击事件

Private Sub mypic_Click()

RaiseEvent returnid(myPicture.Name)

End Sub

'会传值的事件过程

Private Sub idReturned(ByVal id As String)

Dim bookInfo As New BookInfo

bookInfo.Show()

Me.Parent.Enabled = False

'用id变量做点什么吧

End Sub

如果要改事件的签名(参数一类的)的话,得重写控件。你可以这样自己弄一个事件。

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 动态生成的控件在别处如何调用?动态生成的控件有自己的名称吗?

可以先定义name,动态生成的时候,赋给它,你调用的时候就使用固定的变量:

dim a(N) as object

Dim ttmp As New TextBox

ttmp.Top = 3

ttmp.Left = 3

ttmp.Width = 100

ttmp.Text = "我是文本框"

a(1) = ttmp

Me.Controls.Add(a(1))

'调用的时候可以用a(1).text调用了呢

vb.net动态添加控件问题

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

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

RemoveHandler 这个是取消绑定

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

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

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

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


本文名称:vb.net动态控件 vbs使用窗体控件
标题链接:http://myzitong.com/article/dosdiph.html