Фильтрация того, какие символы могут быть добавлены в текстовое поле - PullRequest
1 голос
/ 28 января 2010

В моей форме есть несколько текстовых полей, и мой клиент хочет, чтобы я отфильтровал недопустимые символы, например, в поле name нельзя указывать символы или цифры.

Теперь он хочет, чтобы, когда вы попытаетесь ввести специальный символ, он просто не попадет в текстовое поле. Я знаю, как с этим справиться, но я не уверен, как бы я это сделал.

В основном, что должно произойти, это когда пользователь вводит символы типа $, ^, 5, * и т. Д., Функция должна распознавать это и не допускать их ввода в текстовое поле, независимо от того, означает ли это их удаление, как только они входят, или прерывание действие в целом.

У кого-нибудь есть понимание этого? Все ценится, спасибо.

1 Ответ

0 голосов
/ 28 января 2010

Вы можете использовать регулярное выражение:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    StripNonAlphabetCharacters(TextBox1)
End Sub

Public Sub StripNonAlphabetCharacters(ByVal input As TextBox)
    ' pattern matches any character that is NOT A-Z (allows upper and lower case alphabets)
    Dim rx As New Regex("[^a-zA-Z]")
    If (rx.IsMatch(input.Text)) Then
        Dim startPosition As Integer = input.SelectionStart - 1
        input.Text = rx.Replace(input.Text, "")
        input.SelectionStart = startPosition
    End If
End Sub

Фактический Regex должен быть сделан членом формы, чтобы он не объявлялся каждый раз и не помещался в какой-то общий класс для справки. Логика выбора используется для удержания курсора в его текущем положении после удаления недопустимых символов.


Для WinForms вы можете использовать MaskedTextBox Class и установить Маска .

Для ASP.NET вы можете использовать MaskedEdit элемента управления AJAX Toolkit .

...