Подтвердить форму в C#
Пример
К сожалению, этот метод имеет несколько недостатков. Сначала он перехватывает пользователя в поле до тех пор, пока значение не будет действительным. Если пользователь еще не знает допустимого значения, это предотвращает преждевременное заполнение других полей, и это может расстраивать.
Очень опытные пользователи также часто набирают «головы вниз», не глядя на форму. В этом случае пользователь может не заметить ошибку до конца и может продолжать вводить больше значений в недопустимое поле.
Очень опытные пользователи также часто набирают «головы вниз», не глядя на форму. В этом случае пользователь может не заметить ошибку до конца и может продолжать вводить больше значений в недопустимое поле.
...
Этот пример демонстрирует лучшее решение. Он использует 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 для получения ошибки, связанной с этим элементом управления. Если какой-либо элемент управления имеет непустое сообщение об ошибке, программа отображает его в окне сообщения и выходит из обработчика событий.
Если ни один из элементов управления не имеет сообщения об ошибке, программа отображает введенные значения.