powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Control.Validating Event
6 сообщений из 6, страница 1 из 1
Control.Validating Event
    #32678386
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бога душу мать - извините но это уже крик души.
Я задолбался с двойными а.то и тройными отработками таких свойсв как Validating и Enter...
Например....
Ставим один TextBox и какой либо ActiveX.
У TextBox в Validating ставим e.Cancel = true; (т.е. никуда не выходить).
И ставим точки останока или выкидываем мессаги у него же в таких свойствах как Enter, Leave и Validating.
Теперь запускаем, входим в TextBox и пытаемся из него выползти.
Везде 2-3 отработка.
ПОЧЕМУ !!!!
КАК БОРОТЬСЯ !!!
Если переход на обычный контрол, то как минимум отрабатывает Enter у TextBox. Зачем если было сказано, что никто никуда не идет?
Помогите кто может, иначе я разобью свой ящик и пристерлю Билла.
...
Рейтинг: 0 / 0
Control.Validating Event
    #32678452
viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нужно нервничать...
Не пойму проблемы, опишите детальней...
Вас смущает что после Cancel = true возникает Enter?
Что значит "Везде 2-3 отработка"?
Вот такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private void OnEnter(object sender, System.EventArgs e)
{
	MessageBox.Show("OnEnter");
}

private void OnLeave(object sender, System.EventArgs e)
{
	MessageBox.Show("OnLeave");
}

private void OnValidated(object sender, System.EventArgs e)
{
	MessageBox.Show("OnValidated");
}

private void OnValidating(object sender, System.ComponentModel.CancelEventArgs e)
{
	MessageBox.Show("OnValidating");
	e.Cancel = true;
}
У меня такой порядок:
OnEnter
Уходим...
OnLeave
OnValidating
OnEnter
Вернулись в TextBox
Объясните что не так...
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
Control.Validating Event
    #32679017
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНервничаю, потому как за 2 недели написал класс и уже месяц муздыкаюсь с интерфейсными мелочами, а точнее с тем, что обхожу и затыкаю разного рода дырки, баги и грабли у С#.
Извините - вышел из себя.
Код следующий:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
private void textBox2_Enter(object sender, System.EventArgs e)
{
	listBox1.Items.Add("Enter");
}

private void textBox2_GotFocus(object sender, EventArgs e)
{
	listBox1.Items.Add("GotFocus- " + (sender as Control).Name + " -> " + ActiveControl.Name.ToString());
}

private void textBox2_Leave(object sender, System.EventArgs e)
{
	listBox1.Items.Add("Leave- " + (sender as Control).Name + " -> " + ActiveControl.Name.ToString());
}

private void textBox2_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
	listBox1.Items.Add("Validating-" + ActiveControl.ToString());
	e.Cancel = true;
}

private void textBox2_LostFocus(object sender, EventArgs e)
{
	listBox1.Items.Add("LostFocus- " + (sender as Control).Name + " -> " + ActiveControl.Name.ToString());
}
Резултат при переходе на нормальный контрол:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 /// Вход 
Enter
GotFocus	- textBox2 -> textBox2

 /// Выход в нормальный контрол 
LostFocus	- textBox2 -> textBox2
Leave		- textBox2 -> comboBox1
Validating	- comboBox1
Enter
GotFocus	- textBox2 -> textBox2
Теперь переход в ActiveX, предположим в Date Time ActiveX Control - Version 6.0 (SP4), но это не важно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 /// Вход 
Enter
GotFocus	- textBox2 -> textBox2

 /// Выход в ActiveX 
LostFocus	- textBox2 -> textBox2
Leave		- textBox2 -> axDTPicker2
Validating	- axDTPicker2
Enter
GotFocus	- textBox2 -> textBox2

LostFocus	- textBox2 -> textBox2
Leave		- textBox2 -> axDTPicker2
Validating	- axDTPicker2
Enter
GotFocus	- textBox2 -> textBox2
Почувствуйте разницу...
...
Рейтинг: 0 / 0
Control.Validating Event
    #32679097
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а при выходе (потере фокуса) из каждого/любого контрола не изменяешь к.л. его свойств ? там можно такой каскад событий огрести ...
...
Рейтинг: 0 / 0
Control.Validating Event
    #32679243
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет...
Я специально сделал это примерчик, убедиться, что в чистом виде ситуация повторяется.
На самом деле задача была следующая, написать класс который в зависимости от передаваемой структуры создает свой интерфейс. При переходе в другой контрол, попытке его изменения, попытке применения новых данных и т.д. на все надо спрашивать разрешение на действие.
Т.е. если новые данные неудовлетворяют каким либо требованиям, то не выпускать из этого контрола, пока юзер не внесет нормальный данные либо откажеться от изменений. Или по какой либо причине просто запрещается выход из какого либо контрола (это уже не моя забота).
Но проблема в том, что как на входе в контролы, так и на выход (Leave и Validating) есть всяческие обработки, в том числе и посылки на получение разрешений на действия.
Уже дикое количество флагов для обхода того или иного глюка, создавать еще один - мочи нет. Кроме того я его поставлю, а завтра они исправят и опять работать не будет.
Может есть более простой способ не выпускать юзера из контрола?
...
Рейтинг: 0 / 0
Control.Validating Event
    #32680386
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, может кто-то подтвердить или опровергнуть такое поведение.
Может просто у меня со студией что-то или с мом ДНК...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Control.Validating Event
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]