2012-05-07 2 views
0

Что им пытается сделать, это есть обычай даже на текстовом поле так, когда булева на контроле установлена ​​значению ложно оно выстреливает это событие:управления с пользовательским событием

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 

IVE никогда не используется обработчики событий перед так им не очень хорошо знакомы с ними, так что я мог бы быть на ложном пути здесь

Благодаря

ответ

1

Да, вы на ложном пути с этим. Прослушивание ваших событий всегда является убедительным свидетельством того, что вы ошибаетесь. Вместо этого вы хотите написать свойство setter. Пример:

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 
Смежные вопросы