Два типа обработки событий Enter и Leave для textBox vb.net - PullRequest
0 голосов
/ 25 сентября 2018

Я использую два типа обработки событий Enter и Leave в одной функции, используя с If-Statement.

Кто-нибудь, пожалуйста, исправьте мой сценарий.

Private Sub MaskedTextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OrgNameTextBox.Enter, OrgNameTextBox.Leave        
    If Event = Enter Then
        CType(sender, Control).BackColor = Color.Yellow
        CType(sender, Control).ForeColor = Color.Black

    ElseIf  Event = Leave Then
        CType(sender, Control).BackColor = Color.Black
        CType(sender, Control).ForeColor = Color.White

    End If
End Sub

1 Ответ

0 голосов
/ 26 сентября 2018

В идеале у вас должно быть два отдельных обработчика для двух отдельных событий, потому что вы делаете разные вещи для разных событий.Но если у вас должен быть только один обработчик, вы можете попробовать что-то вроде этого, и я почти уверен, что это HACK:

Private Sub MaskedTextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OrgNameTextBox.Enter, OrgNameTextBox.Leave
 Dim stackTrace As New StackTrace(True)
 Dim frame As StackFrame = stackTrace.GetFrames[0]
 If(frame.GetMethod.Name = 'OnEntered') <CHECK THE EVENT NAME, THIS IS JUST AN EXAMPLE>
            CType(sender, Control).BackColor = Color.Yellow
            CType(sender, Control).ForeColor = Color.Black
 End If
 If(frame.GetMethod.Name = 'OnLeave')        
            CType(sender, Control).BackColor = Color.Black
            CType(sender, Control).ForeColor = Color.White
 End If
End Sub

Я видел способ получить имя события где-то только в StackOverflow, яобновлю ответ, как только я найду его, чтобы дать правильный кредит:)

РЕДАКТИРОВАННЫЙ ОТВЕТ

Private Sub MaskedTextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OrgNameTextBox.Enter, OrgNameTextBox.Leave
     Dim stackTrace As New StackTrace(True)
     For Each frame As StackFrame In s.GetFrames
      IF(frame.GetMethod.Name = 'OnEntered') <CHECK THE EVENT NAME, THIS IS JUST AN EXAMPLE>
                CType(sender, Control).BackColor = Color.Yellow
                CType(sender, Control).ForeColor = Color.Black
      End IF
      IF(frame.GetMethod.Name = 'OnLeave')        
                CType(sender, Control).BackColor = Color.Black
                CType(sender, Control).ForeColor = Color.White
      End If
   NEXT --THIS NEEDS TO BE CHECKED, YOU MAY WANT TO EXIT BEFORE,ONCE FOUND YOUR EVENT.
 End Sub

Также найден фактический ответ, упомянутый ранее для кредита.Это Как получить имя события в vb.net?

...