Я привязываю настройку текстового значения текстового поля к моей переменной в моем файле конфигурации. Я считаю ввод из этого текстового поля действительным только в том случае, если это целое число больше 1. Прямо сейчас я позволял пользователю писать все, что он хотел, в поле, и я позволил ему сохранить настройки только после вызова функция проверки. Проблема, похоже, в том, что моя переменная привязки в классе настроек, похоже, обновляется, как только редактируется текстовое поле, и это поведение, которое я хотел бы пропустить. Как я могу это сделать?
(.net) Основной вопрос о настройках конфигурации
Ответы (3)
Вы можете использовать событие OnValidating
в текстовом поле, чтобы выполнить код проверки, и установить для e.Cancel
значение true, если проверка не проходит (и как-то проинформировать пользователя, возможно, MessageBox
).
person
Matthew Scharley
schedule
22.07.2009
Не похоже, что событие Validating имеет какое-либо отношение к привязкам. Похоже, это происходит, когда ваш контроль теряет фокус. Проблема останется прежней, так как когда вы привязываете свой элемент управления, он просто обновляет переменную привязки, как только вы вводите все, что хотите, в элемент управления. Я не хочу заставлять моего пользователя писать все правильно с первого раза, я просто хочу, чтобы все переменные привязки были правильными, когда пользователь нажимает кнопку «Сохранить» (а затем запускает код проверки).
- person devoured elysium; 23.07.2009
Тогда, несмотря на то, что drs9222 получил минус, это все, что вы можете сделать. Привязка не должна обновляться до прохождения проверки.
- person Matthew Scharley; 23.07.2009
Нет ли какого-либо метода, позволяющего остановить привязку и обновить привязки?
- person devoured elysium; 23.07.2009
Я имею в виду, для чего тогда служат эти классы настроек конфигурации? Если мы не можем проверить данные до того, как данные до того, как классы настроек конфигурации привяжут информацию к переменным привязки, какой в них смысл? Я не могу найти.
- person devoured elysium; 23.07.2009
Вы можете проверять данные до того, как они попадут в привязку; используя встроенные методы проверки. Если вы не хотите использовать встроенные методы проверки, вы не можете использовать встроенные методы привязки. Просто как тот. К счастью, сделать свои собственные привязки довольно просто, если вы действительно хотите пойти по этому пути. Параметры конфигурации полезны для сохранения настроек. Как вы их редактируете, зависит только от вас.
- person Matthew Scharley; 23.07.2009
Не привязывайте значение к текстовому полю. Сначала сделайте, как говорит Мэтью, и «используйте событие OnValidating в текстовом поле, чтобы выполнить код проверки», а затем используйте событие OnValidated для обновления значения конфигурации.
person
drs9222
schedule
22.07.2009
Возможно, вы сможете использовать MasktedTextBox (с маской или без нее), а затем подписаться на событие Validating (или TypeValidationCompleted), чтобы добавить собственную проверку. Я считаю, что связанное значение сохраняется только после успешного завершения проверки.
person
Pat
schedule
08.12.2009