Как сохранить PropertyGrid от многократного вызова окна сообщения о недопустимом значении? - PullRequest
1 голос
/ 11 августа 2011

В моей таблице свойств я поддерживаю значение Hour, которое преобразует строку типа «8 AM» в объект Hour.Для них есть только 24 возможных значения, но я не хочу ограничивать пользователя в использовании раскрывающегося списка.

Таким образом, пользовательский HourConverter: StringConverter реализует GetStandardValues, но вынуждает GetStandardValuesExclusive к значению false.Я хочу, чтобы пользователь мог набрать час, если он хочет, но получить ошибку, если была допущена ошибка (ConvertFrom выдает исключение FormatException).

Вот проблема: если пользователь вводит недопустимое значение, появляется сообщение об ошибке «Значение свойства недействительно», как и ожидалось.Но теперь, если я пытаюсь получить правильное значение с помощью раскрывающегося списка, окно с предупреждением появляется один раз, когда срабатывает раскрывающийся список, и еще 2-3 раза после того, как я выбрал действительное значение из списка.Похоже, что при создании раскрывающегося списка функция ConvertFrom вызывается для всех строковых значений в списке , включая недопустимое значение в текстовом поле .

В конечном итоге происходит следующее: если значение в поле является недействительным, пользователь не может исправить его, просто посмотрев на список, потому что при этом просто появляется больше сообщений независимо от того, что выбрано, иничего не меняется.Как я могу предотвратить это?Должен ли я просто установить GetStandardValuesExclusive для возврата true?

...