Я хочу проверить, что пользователь пишет в текстовом поле, прежде чем сохранять его в базе данных. Каков наилучший способ сделать это? Думаю, я всегда могу написать некоторые ifs или некоторые блоки try-catch, но мне было интересно, есть ли лучший метод. Я прочитал что-то о проверке событий, но я не уверен, как я могу их использовать.
С# Проверка ввода текстового поля на winforms
Ответ 1
Описание
Существует много способов проверки вашего 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 и С#
Дополнительная информация
Ответ 2
С помощью WinForms вы можете использовать ErrorProvider в сочетании с событием Validating
для обработки проверки ввода пользователя. Событие Validating
обеспечивает крючок для выполнения проверки, а ErrorProvider дает хороший последовательный подход к предоставлению пользователю обратной связи при любых условиях ошибки.
http://msdn.microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx