我希望用户能够定义按钮在其代码中的功能,但仍然可以在用户代码顶部的click事件上执行一些代码。
我想要执行的内容:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Button1.Enabled = False
Label1.ForeColor = Color.Gray
Label1.Text = "In Progress"
End Sub
然后执行此操作后,将触发用户的点击事件。
我怎样才能做到这一点?
答案 0 :(得分:1)
对于“用户”,您指的是使用该用户控件的开发人员,对吧?嗯,最常见的事情是提出一个事件,下一个开发人员可以使用它来实现自己的逻辑。这与您完全一样 - 您使用按钮的Click-Event。
基本上,请使用您的代码并添加下面的RaiseEvent
:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Button1.Enabled = False
Label1.ForeColor = Color.Gray
Label1.Text = "In Progress"
' this does not affect your code but provides a "hook" for
' other developers
RaiseEvent OnButtonClick(Button1)
End Sub
现在你需要像这样定义事件......
Public Event OnButtonClick(ByVal sender As Control)
...顺便说一下,你可以传递其他东西(或者根本没有)作为参数。将按钮作为发件人发送只是一种习惯。
使用您的用户控件的开发人员可以在单击按钮后附加所谓的“处理程序”以实现代码,例如:
AddHandler UserControl1.OnButtonClick, AddressOf OnUserControlButtonClick
此代码行只应执行一次,因此通常会将其置于Form_Load
事件中。
现在,在这种情况下,按钮单击被路由到一个名为OnUserControlButtonClick()
的方法,该方法符合事件的签名:这意味着它有一个参数是发件人。
Private Sub OnUserControlButtonClick(ByVal sender as Control)
' custom logic here ...
End Sub
网络上有很多例子,你可以开始here。