LSB71 Ответов: 2

C # как предотвратить использование специальных символов


Hello,
I just created this condition to block special characters.
it works, but can we make it simpler?
Who can bring me a better solution?


Что я уже пробовал:

private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '>' || e.KeyChar == '<' || e.KeyChar == '@' || e.KeyChar == '{' || e.KeyChar == '}' || e.KeyChar == '[' || e.KeyChar == ']' || e.KeyChar == '#' || e.KeyChar == '&' || e.KeyChar == '(' || e.KeyChar == ']' || e.KeyChar == '/' || e.KeyChar == '|' || e.KeyChar == '*' || e.KeyChar == '-' || e.KeyChar == '+' || e.KeyChar == '$' || e.KeyChar == '%' || e.KeyChar == '~' || e.KeyChar == 92)
    {
        e.Handled = true;
    }
}

2 Ответов

Рейтинг:
6

Maciej Los

Другой способ заключается в использовании Обзор Компонентов ErrorProvider - Windows Forms | Microsoft Docs[^]. Вы можете проверить значение, введенное в текстовое поле, и отобразить значок ошибки рядом с текстовым полем.

Отображение значков ошибок для проверки формы с помощью компонента ErrorProvider - Windows Forms | Microsoft Docs[^]
Не забывайте об этом явная ошибка[^] после успешной проверки.


LSB71

Большое вам спасибо, отлично я учусь этому каждый день

Maciej Los

Всегда пожалуйста.

Рейтинг:
15

OriginalGriff

Попробуй:

private const string NotAllowed = @"><@{}[]#&()/|*-+$%~\";
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    if (NotAllowed.Contains(e.KeyChar))
        {
        e.Handled = true;
        }
    }
Или даже:
private const string NotAllowed = @"><@{}[]#&()/|*-+$%~\";
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    e.Handled = NotAllowed.Contains(e.KeyChar);
    }


Maciej Los

%5^;)