Событие проверки ярлыка не срабатывает - PullRequest
1 голос
/ 10 ноября 2008

Я хочу использовать событие Validating для метки в VB.Net (Visual Studio 2005, .Net Runtime 2.0).

У меня есть два текстовых поля рядом. Они предназначены для разделения на% /%, такого как 80/20, 50/50 и т. Д. Итак, у меня есть проверка для каждого блока, чтобы убедиться, что их значения> = 0 и <= 100. Я хочу иметь метка слева от текстовых полей имеет свою собственную валидацию, которая гарантирует, что два значения текстовых полей в точности равны 100. </p>

Я знаю, что могу сделать это в отдельном текстовом поле Проверка события. Я просто не хочу такого поведения. Я предпочел бы иметь дискретное сообщение в каждом текстовом поле, заявляющее, что его содержимое находится за пределами допустимого домена значений, и иметь сообщение об ошибке по метке, если их общее число не равно 100.

Проблема заключается в том, что, несмотря на установку CausesValidation = True в элементах управления Label, их события проверки не запускаются. Даже ручной вызов Me.ValidateChildren () на уровне формы не вызовет событие для меток.

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 25 ноября 2008

события проверки для элементов управления, которые имеют редактируемые значения. метки не имеют редактируемых значений.

Ваша ситуация не редкость, у вас есть проверка на уровне поля с положительным целым числом и бизнес-правило, в котором сумма значений A и B должна быть равна 100%.

один из способов справиться с этим - отложить применение бизнес-правила до заполнения формы; это повлечет за собой проверку бизнес-правила, когда пользователь нажимает кнопку «ОК» (или кнопку «Отправить» в веб-форме)

если вы хотите мгновенную проверку, просто вызовите метод проверки для обоих полей, вызовите метод проверки бизнес-правила

0 голосов
/ 10 ноября 2008

Обратите внимание на событие «текст изменен», я думаю, вы неправильно понимаете использование проверки в случае элементов управления.

В методе, который обрабатывает событие «текст изменен» для tb1, вы можете поместить код, который при редактировании значения изменения в tb2 будет дополнительным к 100, и наоборот, редактирование tb2 приведет к автоматическому изменению в tb1. Вы также можете поместить в эту реакцию обработчиков событий неправильные значения

береги себя

0 голосов
/ 24 ноября 2008

В соответствии с документацией для проверки причин:

"Получает или задает значение, указывающее, вызывает ли элемент управления проверку на любых элементах управления, требующих проверки при получении фокуса."

В моем собственном тестировании мне пришлось специально вызвать Label.Focus (), а затем выйти из этого поля (или вызвать другой элемент управления. Focus ()) для запуска события.

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

0 голосов
/ 10 ноября 2008

Могу я спросить, это веб-проект или форма?

Пользователи не могут вводить какие-либо данные в метку, поэтому я не понимаю, почему они запускают проверку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...