ErrorProvider не является полноценным визуальным компонентом, тем не менее он позволяет настраивать визуальное отображение ошибок при вводе пользователя. Этот элемент применяется преимущестенно для проверки и индикации ошибок.
Так, определим на форме два текстовых поля с именами nameBox и ageBox. И далее перетащим с панели инструментов на форму элемент ErrorProvider.
ErrorProvider оторазится под формой, а в окне свойств мы также сможем управлять его свойствами:
Среди его свойств можно выделить следующие:
BlinkRate: задает частоту мигания значка ошибки
BlinkStyle: задает, когда значок ошибки будет мигать
Icon: устанавливает сам значок ошибки. По умолчанию это красный кружок с восклицательным знаком, но можно установить любую другую иконку.
В коде формы приложения пропишем следующее:
using System; using System.ComponentModel; using System.Windows.Forms; namespace HelloApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); nameBox.Validating += nameBox_Validating; ageBox.Validating += ageBox_Validating; } private void nameBox_Validating(object sender, CancelEventArgs e) { if (String.IsNullOrEmpty(nameBox.Text)) { errorProvider1.SetError(nameBox, "Не указано имя!"); } else if (nameBox.Text.Length < 4) { errorProvider1.SetError(nameBox, "Слишком короткое имя!"); } else { errorProvider1.Clear(); } } private void ageBox_Validating(object sender, CancelEventArgs e) { int age = 0; if (String.IsNullOrEmpty(ageBox.Text)) { errorProvider1.SetError(ageBox, "Не указан возраст!"); } else if (!Int32.TryParse(ageBox.Text, out age)) { errorProvider1.SetError(ageBox, "Некорретный возраст!"); } else { errorProvider1.Clear(); } } } }
Здесь для обоих текстовых полей задано событие Validating, которое срабатывает при вводе пользователя и призвано управлять валидацией вода. Это событие
имеется и у других элементов управления, не только у текстовых полей. В обработчике события Validating мы смотрим на введенный текст, и если он не удовлетворяет условиям,
то с помощью метода errorProvider1.SetError()
для определенного элемента добавляем ошибку. Если все условия соблюдены, то, наоборот, удаляем все ошибки
с помощью метода errorProvider1.Clear()
.
Запустим приложение и при некорректном вводе мы увидим ошибку:
Здесь есть небольшая деталь - валидация элемента будет происходить, когда мы завершим ввод и перейдем на другой элемент. Если же нам надо валидировать элемент по мере ввода, то тогда мы можем обрабатывать событие TextChanged у тех же текстовых полей.