在 vb.net 上禁用 picturebox_click 事件
Disable picturebox_click event on vb.net
我在图片框上使用点击事件,只有在执行某些操作后才能启用。
Private Sub PictureBox_Click_1(sender As Object, e As EventArgs) Handles PictureBox.Click
但我想在不使用 picturebox.enabled=false
的情况下禁用该点击,因为它会将原始颜色更改为灰色。
我该怎么做?谢谢!
如果您使用的是静态事件处理程序 (Handles [...]),则删除它会有点困难。
最简单和最干净的解决方案是拥有一个布尔值并检查它在事件上的值(并在需要的地方更改它allow/disallow)。
或将其更改为非静态处理程序:AddHandler/RemoveHandler。
其他解决方案将暗示继承 PictureBox 并覆盖 OnClick 方法。
有两种可能。
您使用布尔值表示您不想运行事件处理程序中的逻辑。
这是一个例子:
Private _usePictureBoxEvent as Boolean = True
Private Sub PictureBox_Click_1(sender As Object, e As EventArgs) Handles PictureBox.Click
If _usePictureBoxEvent Then
'Do your event stuff here
End If
End Sub
要停用事件处理:
_usePictureBoxEvent = False 'the event will still be activated but we'll do nothing
动态订阅事件:AddHandler
和RemoveHandler
这是一个例子:
Public Sub New()
'VS calls this, don't touch
InitializeComponents()
'We add a listener to this event
AddHandler Me.PictureBox.Click, AddressOf PictureBox_Click_1
'Other stuff
End Sub
Private Sub PictureBox_Click_1(sender As Object, e As EventArgs) 'No more Handles clause
'Do your event stuff
End Sub
并阻止事件触发:
'Anywhere in your code
RemoveHandler Me.PictureBox.Click, AddressOf PictureBox_Click_1
我在图片框上使用点击事件,只有在执行某些操作后才能启用。
Private Sub PictureBox_Click_1(sender As Object, e As EventArgs) Handles PictureBox.Click
但我想在不使用 picturebox.enabled=false
的情况下禁用该点击,因为它会将原始颜色更改为灰色。
我该怎么做?谢谢!
如果您使用的是静态事件处理程序 (Handles [...]),则删除它会有点困难。
最简单和最干净的解决方案是拥有一个布尔值并检查它在事件上的值(并在需要的地方更改它allow/disallow)。
或将其更改为非静态处理程序:AddHandler/RemoveHandler。
其他解决方案将暗示继承 PictureBox 并覆盖 OnClick 方法。
有两种可能。
您使用布尔值表示您不想运行事件处理程序中的逻辑。
这是一个例子:
Private _usePictureBoxEvent as Boolean = True Private Sub PictureBox_Click_1(sender As Object, e As EventArgs) Handles PictureBox.Click If _usePictureBoxEvent Then 'Do your event stuff here End If End Sub
要停用事件处理:
_usePictureBoxEvent = False 'the event will still be activated but we'll do nothing
动态订阅事件:
AddHandler
和RemoveHandler
这是一个例子:
Public Sub New() 'VS calls this, don't touch InitializeComponents() 'We add a listener to this event AddHandler Me.PictureBox.Click, AddressOf PictureBox_Click_1 'Other stuff End Sub Private Sub PictureBox_Click_1(sender As Object, e As EventArgs) 'No more Handles clause 'Do your event stuff End Sub
并阻止事件触发:
'Anywhere in your code RemoveHandler Me.PictureBox.Click, AddressOf PictureBox_Click_1