Vb.net 禁用标签上的鼠标事件(启用时)

Vb.net 禁用标签上的鼠标事件(启用时),vb.net,events,Vb.net,Events,我有一个由面板、图片盒和标签组成的“按钮” 我已禁用picturebox和标签以保持鼠标指针(和背景色)处于活动状态。 但是,禁用的标签具有常见的褪色文本-是否有一种方法可以保持标签处于启用状态,但忽略鼠标事件,就像禁用时一样 Private Sub panelBackup_MouseEnter(sender As Object, e As EventArgs) Handles panelBackupButton.MouseEnter Dim btn As Panel = DirectC

我有一个由面板、图片盒和标签组成的“按钮”

我已禁用picturebox和标签以保持鼠标指针(和背景色)处于活动状态。 但是,禁用的标签具有常见的褪色文本-是否有一种方法可以保持标签处于启用状态,但忽略鼠标事件,就像禁用时一样

Private Sub panelBackup_MouseEnter(sender As Object, e As EventArgs) Handles panelBackupButton.MouseEnter
    Dim btn As Panel = DirectCast(sender, Panel)
    btn.BackColor = Color.Gray
End Sub

Private Sub panelBackup_MouseLeave(sender As Object, e As EventArgs) Handles panelBackupButton.MouseLeave
    Dim btn As Panel = DirectCast(sender, Panel)
    btn.BackColor = Color.LightGray
End Sub

也为标签设置相同的事件

Private Sub panelBackup_MouseEnter(sender As Object, e As EventArgs) 
                   Handles panelBackupButton.MouseEnter, Label1.MouseEnter 
    Dim btn As Panel = TryCast(sender, Panel) 
    if Not btn Is Nothing then 
        btn.BackColor = Color.Gray 
    else 
        Dim lbl As Label = TryCast(sender, Label)
        lbl.BackColor = Color.Gray 
    end if
End Sub

Private Sub panelBackup_MouseLeave(sender As Object, e As EventArgs) 
                   Handles panelBackupButton.MouseLeave, Label1.MouseLeave 
    Dim btn As Panel = TryCast(sender, Panel) 
    if Not btn Is Nothing then 
        btn.BackColor = Color.LightGray 
    else 
        Dim lbl As Label = TryCast(sender, Label)
        lbl.BackColor = Color.LightGray 
    end if
End Sub 
我还删除了DirectCast,因为您可以直接使用panelBackup.BackColor属性(否则,您需要添加不必要的附加逻辑来区分由面板或标签触发的事件)

编辑:看到您的评论,我已经更改了重新引入强制转换的方法,但是使用TryCast可以避免由标签引发事件时出现异常。
我应该提到,可能可以尝试向通用控件而不是特定的面板或标签播放,因为BackColor是从基类(控件)继承的属性。

Hi,函数用于多个面板,因此我尝试播放。