文本框的两种事件处理类型 Enter 和 Leave vb.net
Two Type of event-handling Enter and Leave for textBox vb.net
我在一个函数中使用两种类型的事件处理 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
理想情况下,您应该为两个单独的事件设置两个单独的处理程序,因为您对不同的事件执行不同的操作。但是如果你必须只有一个处理程序那么你可以尝试类似的东西,我很确定这是一个 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
我只在 Whosebug 的某个地方看到了获取事件名称的方法,一旦找到正确的答案,我会更新答案:)
已编辑答案
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
还找到了前面提到的实际答案以供参考。这是How to get event name in vb.net?
我在一个函数中使用两种类型的事件处理 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
理想情况下,您应该为两个单独的事件设置两个单独的处理程序,因为您对不同的事件执行不同的操作。但是如果你必须只有一个处理程序那么你可以尝试类似的东西,我很确定这是一个 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
我只在 Whosebug 的某个地方看到了获取事件名称的方法,一旦找到正确的答案,我会更新答案:)
已编辑答案
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
还找到了前面提到的实际答案以供参考。这是How to get event name in vb.net?