Предотвращение вставки чисел в текстовое поле в формах Windows .net - PullRequest
1 голос
/ 21 сентября 2010

Я запретил ввод чисел в текстовом поле с помощью события нажатия клавиши. Но при использовании Ctrl + V или вставке содержимого с помощью мыши цифры вводятся в текстовое поле. Как это предотвратить? Я должен разрешить вставку / ввод всего текста, кроме цифр.

Ответы [ 3 ]

3 голосов
/ 21 сентября 2010

При достаточно простом подходе можно проверить текст, используя событие TextChanged. Если текст верен, сохраните его копию в строковой переменной. Если оно недопустимо, покажите сообщение, а затем восстановите текст из переменной:

string _latestValidText = string.Empty;
private void TextBox_TextChanged(object sender, EventArgs e)
{
    TextBox target = sender as TextBox;
    if (ContainsNumber(target.Text))
    {
        // display alert and reset text
        MessageBox.Show("The text may not contain any numbers.");
        target.Text = _latestValidText;
    }
    else
    {
        _latestValidText = target.Text;
    }
}
private static bool ContainsNumber(string input)
{
    return Regex.IsMatch(input, @"\d+");
}

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

3 голосов
/ 21 сентября 2010

использовать событие TextBox.TextChanged.Затем используйте тот же код, что и в событии KeyDown.Фактически вам больше не нужно событие keydown

0 голосов
/ 21 сентября 2010

Вы можете использовать событие изменения JavaScript (onchange) вместо события keydown. Это будет проверяться только тогда, когда пользователь покидает текстовое поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...