Предварительная обработка для проверки события для элементов управления в форме windows
Я разрабатываю форму ввода данных.
Пользовательский интерфейс состоит из:
1. текстовое поле для имени пользователя
2. текстовое поле для пользовательского кода
3. ListView не показывает список существующих пользователей
4. кнопка для добавления нового пользователя
Теперь, обрабатывая событие проверки для 2 текстовых полей, я написал этот код:
void tb_Name_Validating(object sender, CancelEventArgs e) { try { if(tb_Name.TextLength == 0) { tb_Code.Enabled = false; tb_Name.ForeColor = Color.White; tb_Name.BackColor = Color.PaleVioletRed; tb_Name.Focus(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
Я не разрешаю пользователю переходить к следующему элементу управления, если пользователь не предоставил значение для имени пользователя.
Теперь проблема возникает, когда фокус ввода все еще находится на tb_Name и пользователь нажимает на элемент в элементе управления listview.
Как только пользователь нажимает на элемент listview, запускается событие проверки для текстового поля tb_Name. И фокус снова остался на самом текстовом поле с ошибкой (изменение обратного цвета).
Я хочу обойти событие проверки. Но я не знаю, как сказать c#, что пользователь перешел к какому-то другому элементу управления, кроме tb_Code. Событие проверки должно происходить только тогда, когда пользователь пытается перейти к управлению tb_Code.
Любая помощь будет высоко оценена.
Спасибо!
Что я уже пробовал:
Я попытался пройти через порядок событий для Enter, Leave, GotFocus, LostFocus, validating и validated.
Кроме того, я перепробовал множество альтернатив, но ни одна из них не сработала идеально.