用户控件中的子控件的事件怎么公开给使用者,让之调用
用户控件中的子控件的事件如何公开给使用者,让之调用?
本人新增了一个用户控件,上面有2个textbox,1个button
在控件内部程序中,对button.click过程中对其中一个textbox做了处理,
而我想再把button的click事件再开发给用户,当用户click时,对另一个textbox处理!
问题是:
在窗体上,拖放的控件命名为A,当我单击button时,根本就没有触发A_click事件.
后发现,A是一个容器,不是button.
那我如何公开子控件button的事件(如click,mousedown等)给用户调用呢?
------解决方案--------------------
Public Class Form1
Dim a As New UserControl1
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
a.Controls.Item(1).Text = "对TextBox2操作 "
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim button1 As Button = a.Controls.Item(2) ' 假设你先加入两个TextBox,再加入Button
AddHandler button1.Click, AddressOf Button1_Click
Me.Controls.Add(a)
End Sub
End Class
------解决方案--------------------
在你的控件中添加如下的事件属性:
Public Event ButtonClick As EventHandler
AddHandler(ByVal value As EventHandler)
AddHandler Me.button1.Click, value
End AddHandler
RemoveHander(ByVal value As EventHandler)
RemoveHandler Me.button1.Click, value
End RemoveHander
End Event
然后对你的控件添加事件ButtonClick 的处理就是了.
本人新增了一个用户控件,上面有2个textbox,1个button
在控件内部程序中,对button.click过程中对其中一个textbox做了处理,
而我想再把button的click事件再开发给用户,当用户click时,对另一个textbox处理!
问题是:
在窗体上,拖放的控件命名为A,当我单击button时,根本就没有触发A_click事件.
后发现,A是一个容器,不是button.
那我如何公开子控件button的事件(如click,mousedown等)给用户调用呢?
------解决方案--------------------
Public Class Form1
Dim a As New UserControl1
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
a.Controls.Item(1).Text = "对TextBox2操作 "
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim button1 As Button = a.Controls.Item(2) ' 假设你先加入两个TextBox,再加入Button
AddHandler button1.Click, AddressOf Button1_Click
Me.Controls.Add(a)
End Sub
End Class
------解决方案--------------------
在你的控件中添加如下的事件属性:
Public Event ButtonClick As EventHandler
AddHandler(ByVal value As EventHandler)
AddHandler Me.button1.Click, value
End AddHandler
RemoveHander(ByVal value As EventHandler)
RemoveHandler Me.button1.Click, value
End RemoveHander
End Event
然后对你的控件添加事件ButtonClick 的处理就是了.