[英]Twice Open Color Dialog box?
I have a form with 8 command button, I use AddHandler
for Click event for all buttons. 我有一个带有8个命令按钮的表单,我对所有按钮使用
AddHandler
进行Click事件。
but when I press a button, cmbColor_Click
run twice. 但是当我按下一个按钮时,
cmbColor_Click
运行两次。
Public Sub OpenForm()
AddHandler cmbColor1.Click, AddressOf cmbColor_Click
AddHandler cmbColor2.Click, AddressOf cmbColor_Click
AddHandler cmbColor3.Click, AddressOf cmbColor_Click
AddHandler cmbColor4.Click, AddressOf cmbColor_Click
AddHandler cmbColor5.Click, AddressOf cmbColor_Click
AddHandler cmbColor6.Click, AddressOf cmbColor_Click
AddHandler cmbColor7.Click, AddressOf cmbColor_Click
AddHandler cmbColor8.Click, AddressOf cmbColor_Click
End Sub
Private Sub cmbColor_Click(sender As Object, e As EventArgs)
Dim _color As New ColorDialog
Dim _button As Button = CType(sender, Button)
_color.Color = _button.BackColor
If _color.ShowDialog() = Windows.Forms.DialogResult.OK Then
_button.BackColor = _color.Color
End If
End Sub
If the event handler is being called twice for one event then the event handler has been attached to the event twice. 如果针对一个事件两次调用事件处理程序,则该事件处理程序已附加到该事件两次。
Ideally, you would track down why AddHandler is being used more than once and eliminate the problem. 理想情况下,您将跟踪为什么多次使用AddHandler并消除该问题。
However, as a quick fix, you can remove the event handler before adding it - it is not an error to try to remove a non-existent event handler. 但是,作为快速解决方案,您可以在添加事件处理程序之前先将其删除-尝试删除不存在的事件处理程序并不是错误。
So... 所以...
Friend Sub OpenForm()
Dim cmbs = {cmbColor1, cmbColor2, cmbColor3, cmbColor4, cmbColor5, cmbColor6, cmbColor7, cmbColor8}
For Each cmb In cmbs
RemoveHandler cmb.click, AddressOf cmbColor_Click
AddHandler cmb.click, AddressOf cmbColor_Click
Next
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.