Как проверить значение текстового поля при входе пользователя и отображать сообщение об ошибке? - PullRequest
2 голосов
/ 15 апреля 2019

Итак, я должен написать метод, который проверяет, содержит ли строка, сохраняющая имя, только буквы, без цифр.Проверка значений текстового поля должна применяться, когда пользователь вводит событие с измененным текстом перед отправкой формы и отображает сообщение об ошибке красного цвета на этикетке.Мой код работает, но проблема заключается в том, что, когда я вписываю числовое число в текстовое поле, на этикетке отображается ошибка, которая сохраняется даже при удалении значения текстового поля и вводе буквенной строки.

Я объявил метод, который назначает строку ошибки для метки, и вызывается, если регулярное выражение не совпадает с вводом текстового поля, во время события изменения текста.

public void Validator()
{
    Calculate_Salary.Enabled = false;
    label4.Text = "Please enter only alphabetical letters";
}

private void _Name_TextChanged(object sender, EventArgs e)
{
    Regex pattern = new Regex("/^[A-Za-z]+$/");
    string name = _Name.Text;
    if (pattern.IsMatch(name))
    {
        Calculate_Salary.Enabled = true;
        label4.Text = "";

    }
    else
    {
        Validator();
    }
}     

GUI

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

Просто очистите текстовое поле перед проверкой:

public void Validator()
{
    Calculate_Salary.Enabled = false;
    label4.Text = "Please enter only alphabetical letters";
}
private void _Name_TextChanged(object sender, EventArgs e)
{
    label4.Text = "";
    Regex pattern = new Regex("/^[A-Za-z]+$/");
    string name = _Name.Text;
    if (pattern.IsMatch(name))
    {
        Calculate_Salary.Enabled = true;

    }
    else
    {
        Validator();
    }
}
0 голосов
/ 15 апреля 2019

Ваше Regex сравнение неверно, попробуйте этот код:

public void Validator()
{
    Calculate_Salary.Enabled = false;
    label4.Text = "Please enter only alphabetical letters";
}

private void _Name_TextChanged(object sender, EventArgs e)
{
    label4.Text = "";
    string name = _Name.Text;
    if (Regex.IsMatch(name, @"^[a-zA-Z]+$"))
        Calculate_Salary.Enabled = true;
    else
        Validator();
}
0 голосов
/ 15 апреля 2019

Я изменил код проверки.Кажется, сейчас работает.

private void _Name_TextChanged(object sender, EventArgs e)
{
    label4.Text = string.Empty;

    string name = _Name.Text;
    if (Regex.IsMatch(_Name.Text, "^[a-zA-Z]+$") || _Name.Text=="")
    {
        Calculate_Salary.Enabled = true;
    }
    else
    {
        Calculate_Salary.Enabled = false;
        label4.Text = Validator();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...