Во-первых, доступен элемент управления отфильтрованным текстом здесь , который выполняет простую маскировку
Простой способ - обработать событие PreviewTextInput чем-то вроде этого.
Private Sub TextBox1_PreviewTextInput(ByVal sender As Object, ByVal e As System.Windows.Input.TextCompositionEventArgs) Handles TextBox1.PreviewTextInput
Dim Character As Char = Convert.ToChar(e.Text)
If Char.IsDigit(Character) Then
e.Handled = False
ElseIf Char.IsLetter(Character) And UCase(Character) = Character Then
e.Handled = False
Else
e.Handled = True
End If
End Sub