Как обработать событие для TextBox и MaskTextBox без InvalidCastException? - PullRequest
0 голосов
/ 25 сентября 2018

Любой приятель, пожалуйста, исправьте мой сценарий, TextBox переменная работает, но MaskTextBox Возвращает error в этом EnterEvent.

Я хочу использовать одну функцию event-handling для TextBoxи MaskTextBox

    Private Sub TextBox_Enter(sender As Object, e As EventArgs) Handles OrgNameTextBox.Enter, AddressTextBox.Enter, ContactNumMaskedTextBox.Enter
        Dim Tb As TextBox = CType(sender, TextBox)
        Dim Mtb As MaskedTextBox = CType(sender, MaskedTextBox)
        If Type = MASKTEXTBOX Then
            MTb.BackColor = Color.Yellow
            MTb.ForeColor = Color.Black
        ElseIf Type = TextBox Then
            Tb.BackColor = Color.Yellow
            Tb.ForeColor = Color.Black
        End If
    End Sub

Ответы [ 2 ]

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

я использую Пример @Jimi и его работы ...

Private Sub MaskedTextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OrgNameTextBox.Enter, OrgNameTextBox.Leave        
    CType(sender, Control).BackColor = Color.Yellow
    CType(sender, Control).ForeColor = Color.Black
End Sub
0 голосов
/ 25 сентября 2018

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

Private Sub TextBox_Enter(sender As Object, e As EventArgs) Handles OrgNameTextBox.Enter, AddressTextBox.Enter, ContactNumMaskedTextBox.Enter
    If TypeOf sender Is MaskedTextBox Then
        Dim Mtb As MaskedTextBox = CType(sender, MaskedTextBox)
        Mtb.BackColor = Color.Yellow
        Mtb.ForeColor = Color.Black
    ElseIf TypeOf sender Is TextBox Then
        Dim Tb As TextBox = CType(sender, TextBox)
        Tb.BackColor = Color.Yellow
        Tb.ForeColor = Color.Black
    End If
End Sub

Лучше использовать общий предок обоих элементов управления TextBoxBase

Private Sub TextBox_Enter(sender As Object, e As EventArgs) Handles OrgNameTextBox.Enter, AddressTextBox.Enter, ContactNumMaskedTextBox.Enter
    Dim bt As TextBoxBase = TryCast(sender, TextBoxBase)
    If bt IsNot Nothing Then
        bt.BackColor = Color.Yellow
        bt.ForeColor = Color.Black
    End If
End Sub
...