(.net) Основной вопрос о настройках конфигурации

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


person devoured elysium    schedule 22.07.2009    source источник


Ответы (3)


Вы можете использовать событие OnValidating в текстовом поле, чтобы выполнить код проверки, и установить для e.Cancel значение true, если проверка не проходит (и как-то проинформировать пользователя, возможно, MessageBox).

person Matthew Scharley    schedule 22.07.2009
comment
Не похоже, что событие Validating имеет какое-либо отношение к привязкам. Похоже, это происходит, когда ваш контроль теряет фокус. Проблема останется прежней, так как когда вы привязываете свой элемент управления, он просто обновляет переменную привязки, как только вы вводите все, что хотите, в элемент управления. Я не хочу заставлять моего пользователя писать все правильно с первого раза, я просто хочу, чтобы все переменные привязки были правильными, когда пользователь нажимает кнопку «Сохранить» (а затем запускает код проверки). - person devoured elysium; 23.07.2009
comment
Тогда, несмотря на то, что drs9222 получил минус, это все, что вы можете сделать. Привязка не должна обновляться до прохождения проверки. - person Matthew Scharley; 23.07.2009
comment
Нет ли какого-либо метода, позволяющего остановить привязку и обновить привязки? - person devoured elysium; 23.07.2009
comment
Я имею в виду, для чего тогда служат эти классы настроек конфигурации? Если мы не можем проверить данные до того, как данные до того, как классы настроек конфигурации привяжут информацию к переменным привязки, какой в ​​них смысл? Я не могу найти. - person devoured elysium; 23.07.2009
comment
Вы можете проверять данные до того, как они попадут в привязку; используя встроенные методы проверки. Если вы не хотите использовать встроенные методы проверки, вы не можете использовать встроенные методы привязки. Просто как тот. К счастью, сделать свои собственные привязки довольно просто, если вы действительно хотите пойти по этому пути. Параметры конфигурации полезны для сохранения настроек. Как вы их редактируете, зависит только от вас. - person Matthew Scharley; 23.07.2009

Не привязывайте значение к текстовому полю. Сначала сделайте, как говорит Мэтью, и «используйте событие OnValidating в текстовом поле, чтобы выполнить код проверки», а затем используйте событие OnValidated для обновления значения конфигурации.

person drs9222    schedule 22.07.2009

Возможно, вы сможете использовать MasktedTextBox (с маской или без нее), а затем подписаться на событие Validating (или TypeValidationCompleted), чтобы добавить собственную проверку. Я считаю, что связанное значение сохраняется только после успешного завершения проверки.

person Pat    schedule 08.12.2009