在自定义控件内的按钮单击中添加逻辑
Add logic inside button click inside a custom control
我正在制作一个如下所示的自定义控件(按钮右侧有一个标签):
我希望用户能够在他的代码中定义按钮的功能,但仍然在用户代码之上的点击事件上执行一些代码。
我要执行的是:
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
那么执行完之后就会触发用户的点击事件
我怎样才能做到这一点?
"the user" 是指使用该用户控件的开发人员,对吗?好吧,最常见的事情是引发下一个开发人员可以用来实现他自己的逻辑的事件。这和你做的完全一样——你使用按钮的点击事件。
基本上,获取您的代码并在下面添加 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)
...顺便说一句,您可以传递其他内容(或什么都不传递)作为参数。发送按钮作为发件人只是一种习惯。
使用您的用户控件的开发人员可以附加所谓的 "Handler" 以在单击按钮后立即执行代码,例如:
AddHandler UserControl1.OnButtonClick, AddressOf OnUserControlButtonClick
此代码行只应执行一次,因此通常将其放在 Form_Load
事件中。
现在,在这种情况下,按钮点击被路由到一个名为 OnUserControlButtonClick()
的方法,该方法符合事件的签名:这意味着它有一个参数,即发送者。
Private Sub OnUserControlButtonClick(ByVal sender as Control)
' custom logic here ...
End Sub
网上的例子太多了,你可以开始here。
我正在制作一个如下所示的自定义控件(按钮右侧有一个标签):
我希望用户能够在他的代码中定义按钮的功能,但仍然在用户代码之上的点击事件上执行一些代码。
我要执行的是:
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
那么执行完之后就会触发用户的点击事件
我怎样才能做到这一点?
"the user" 是指使用该用户控件的开发人员,对吗?好吧,最常见的事情是引发下一个开发人员可以用来实现他自己的逻辑的事件。这和你做的完全一样——你使用按钮的点击事件。
基本上,获取您的代码并在下面添加 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)
...顺便说一句,您可以传递其他内容(或什么都不传递)作为参数。发送按钮作为发件人只是一种习惯。
使用您的用户控件的开发人员可以附加所谓的 "Handler" 以在单击按钮后立即执行代码,例如:
AddHandler UserControl1.OnButtonClick, AddressOf OnUserControlButtonClick
此代码行只应执行一次,因此通常将其放在 Form_Load
事件中。
现在,在这种情况下,按钮点击被路由到一个名为 OnUserControlButtonClick()
的方法,该方法符合事件的签名:这意味着它有一个参数,即发送者。
Private Sub OnUserControlButtonClick(ByVal sender as Control)
' custom logic here ...
End Sub
网上的例子太多了,你可以开始here。