Подтвердить форму в C#

Пример Использование события Validating в C# объясняет, как вы можете использовать обработчик событий Validating, чтобы проверить значение поля, когда фокус покидает это поле. Если значение поля недействительно, программа может отображать сообщение, помечать ошибку (возможно, с помощью компонента ErrorProvider) и установить e.Cancel = true, чтобы предотвратить фокус с оставляя поле.

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

Очень опытные пользователи также часто набирают «головы вниз», не глядя на форму. В этом случае пользователь может не заметить ошибку до конца и может продолжать вводить больше значений в недопустимое поле.

Очень опытные пользователи также часто набирают «головы вниз», не глядя на форму. В этом случае пользователь может не заметить ошибку до конца и может продолжать вводить больше значений в недопустимое поле.

...

Этот пример демонстрирует лучшее решение. Он использует Validating обработчики событий для отметки недопустимых полей, но не устанавливает e.Cancel в true, чтобы пользователь мог оставить неправильные поля. Позже, когда пользователь нажимает кнопку «ОК», форма проверяет поля, чтобы убедиться, что они недействительны.

Дополнительную информацию об использовании событий Validating см. в предыдущем примере. Следующий код показывает, как кнопка OK проверяет все поля примера.

// Пользователь принял значения.
private void btnOk_Click(object sender, EventArgs e)
{
    // Проверяем все поля.
    ValidateRequiredField(errField, txtFirstName);
    ValidateRequiredField(errField, txtLastName);
    ValidateRequiredField(errField, txtStreet);
    ValidateRequiredField(errField, txtCity);
    ValidateRequiredField(errField, txtState);
    ValidateZipCode(errField, txtZip);

    // Смотрите, есть ли в поле сообщение об ошибке.
    foreach (Control ctl in Controls)
    {
        if (errField.GetError(ctl) != "")
        {
            MessageBox.Show(errField.GetError(ctl));
            return;
        }
    }

    MessageBox.Show("You entered:\n" +
        txtFirstName.Text + ' ' + txtLastName.Text + '\n' +
        txtStreet.Name + '\n' +
        txtCity.Name + '\t' + txtState.Text + '\t' + txtZip.Text);
}

Этот код сначала вызывает методы проверки для проверки всех TextBox es.

Затем он проходит через каждый элемент управления в форме. Для каждого элемента управления код использует метод ErrorProvider объекта GetError для получения ошибки, связанной с этим элементом управления. Если какой-либо элемент управления имеет непустое сообщение об ошибке, программа отображает его в окне сообщения и выходит из обработчика событий.

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

Источник: http://csharphelper.com/blog/2016/02/validate-a-form-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector