vb.net текстовое поле без специальных символов

#vb.net #validation #textbox

#vb.net #проверка #текстовое поле

Вопрос:

Я хотел бы пропустить часть проверки и просто сделать так, чтобы в текстовом поле не было ничего, что мне не нужно.

Цель состоит в том, чтобы разрешить вводить пробелы, пробелы и буквы: d, r, i (верхний и нижний).

Как я могу сделать так, чтобы не вводились специальные символы, такие как {}, !, :;»и т.д.?

 Private Sub txtParty_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtParty.KeyPress
    'allows only numbers, letter, space, and backspace
    If Char.IsControl(e.KeyChar) = False And Char.IsSeparator(e.KeyChar) = False And Char.IsLetterOrDigit(e.KeyChar) = True And e.KeyChar <> "d" And e.KeyChar <> "D" And e.KeyChar <> "r" And e.KeyChar <> "R" And e.KeyChar <> "i" And e.KeyChar <> "I" Then
        e.Handled = True
    End If
End Sub
  

Комментарии:

1. Вы можете использовать регулярное выражение с проверкой на стороне клиента. Это ASP.Net Веб-форма?

2. Добавление проверки регулярного выражения в текстовое поле из MSDN msdn.microsoft.com/en-us/library/ms996428.aspx

Ответ №1:

Вероятно, проще с помощью пары If-блоков для фильтрации данных.

 Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs)
                              Handles TextBox1.KeyPress
  If e.KeyChar <> ControlChars.Back AndAlso e.KeyChar <> " " Then
    If Not Char.IsLetter(e.KeyChar) OrElse
      Not "DRI".Contains(e.KeyChar.ToString.ToUpper) Then
        e.Handled = True
    End If
  End If
End Sub
  

Конечно, вам все равно придется перехватить Ctrl-V и удалить ContextMenuStrip, чтобы предотвратить вставку текста в текстовое поле.