С# Проверка ввода текстового поля на winforms

Я хочу проверить, что пользователь пишет в текстовом поле, прежде чем сохранять его в базе данных. Каков наилучший способ сделать это? Думаю, я всегда могу написать некоторые ifs или некоторые блоки try-catch, но мне было интересно, есть ли лучший метод. Я прочитал что-то о проверке событий, но я не уверен, как я могу их использовать.

Описание

Существует много способов проверки вашего TextBox. Вы можете сделать это при каждом нажатии клавиши, в более позднее время или в событии Validating.

Событие Validating запускается, если ваш TextBox теряет фокус. Например, когда пользователь нажимает на другой элемент управления. Если ваш набор e.Cancel = true, TextBox не теряет фокус.

MSDN - Control.Validating Event. Когда вы меняете фокус с помощью клавиатуры (TAB, SHIFT + TAB и т.д.), вызывая методы Select или SelectNextControl или устанавливая ContainerControl.ActiveControl для текущей формы, события фокуса происходят в следующем порядке

Enter

GotFocus

Отпуска

Неактивированные

Подтверждено

LostFocus

Когда вы меняете фокус с помощью мыши или вызывая метод Фокус, события фокуса происходят в следующем порядке:

Enter

GotFocus

LostFocus

Отпуска

Неактивированные

Подтверждено

Пример проверочного события

private void textBox1_Validating(object sender, CancelEventArgs e)
{
    if (textBox1.Text != "something")
        e.Cancel = true;
}

Update

Вы можете использовать ErrorProvider для визуализации того, что ваш TextBox недействителен. Проверьте Использование управления поставщиками ошибок в Windows Forms и С#

Дополнительная информация

36
ответ дан 18 янв. '12 в 21:16
источник

С помощью WinForms вы можете использовать ErrorProvider в сочетании с событием Validating для обработки проверки ввода пользователя. Событие Validating обеспечивает крючок для выполнения проверки, а ErrorProvider дает хороший последовательный подход к предоставлению пользователю обратной связи при любых условиях ошибки.

http://msdn.microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx

9
ответ дан 18 янв. '12 в 21:19
источник