C # Вставить текст проходит проверку - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно проверить простое текстовое поле, чтобы запретить пользователю вводить какие-либо специальные символы ("! @ # $% * \ T").Это работает, но пользователь может обойти эту проверку, вставив значение в текстовое поле, щелкнув правой кнопкой мыши и вставив.Есть ли способ проверить вставленное значение?

 private void NoSpecialCharacter(object sender, KeyPressEventArgs e)
    {
        var regex = new Regex(@"[^a-zA-Z0-9\s]");
        if (regex.IsMatch(e.KeyChar.ToString()))
        {
            e.Handled = true;
        }
    }

1 Ответ

0 голосов
/ 12 октября 2018

Использование TextChanged Событие управления TextBox - оно работает, когда вы вводите любое значение в TextBox - вставлять или вводить - не имеет значения.

Выполните проверку как функцию с результатом bool и проверьтеэто на каждом TextChanged событии, подобном этому

private void textBox_TextChanged(object sender, EventArgs e)
{
    if (CheckStrng(textBox.Text))
        // Validated - do what you needed
    else
        // Not Validated 
}

Вместо этого LINQ вы можете создать свой собственный метод с помощью регулярного выражения

private bool CheckStrng(string str)
    {
     return str.Length == str.Count(x => Char.IsLetterOrDigit(x)) + str.Count(x => Char.IsWhiteSpace(x));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...