在 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 方法。

有两种可能。

  1. 您使用布尔值表示您不想运行事件处理程序中的逻辑。

    这是一个例子:

    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
    
  2. 动态订阅事件:AddHandlerRemoveHandler

    这是一个例子:

    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