Vb.net 带有自定义事件的控件

Vb.net 带有自定义事件的控件,vb.net,events,Vb.net,Events,我想做的是,即使在文本框控件上也有一个自定义控件,因此当控件上的布尔值设置为false时,它将触发此事件: Public Property isError As Boolean = False Public Event IsInError As EventHandler Private Sub textInError() Handles Me.IsInError If isError = False Then Me.BackColor

我想做的是,即使在文本框控件上也有一个自定义控件,因此当控件上的布尔值设置为false时,它将触发此事件:

Public Property isError As Boolean = False

    Public Event IsInError As EventHandler

    Private Sub textInError() Handles Me.IsInError
        If isError = False Then
            Me.BackColor = isErrorColor
        End If
    End Sub
我以前从未真正使用过事件处理程序,所以我对它们不是很熟悉,所以我可能走错了路


谢谢

是的,你走错了方向。倾听自己的事件总是一个强烈的信号,表明你错了。您需要编写一个属性设置程序。像这样:

Public Property IsError() As Boolean
    Get
        Return hasError
    End Get
    Set(ByVal value As Boolean)
        If value == hasError Then Return
        hasError = value
        If hasError Then
            prevBackColor = Me.BackColor
            Me.BackColor = isErrorColor
            '' RaiseEvent IsInError(Me, EventArgs.Empty)  '' If you still need the event
        Else
            Me.BackColor = prevBackColor
        End If
    End Set
End Property

Private hasError As Boolean
Private prevBackColor As Color