почему свойства IExtenderProvider теряются в конструкторе в приложении окна C #? - PullRequest
2 голосов
/ 12 июня 2009

Я создал IExtenderProvider (Extender) для Controls.using Extender, я перебираю коллекцию элементов управления и проверяю ее. Это отлично работает, но иногда при изменении некоторых дизайнов или при обновлении дизайнера (при удалении некоторых событий) из кода), свойства, предоставленные Extender (в моем случае, Validation Order и Group) теряются от дизайнера, а сам элемент управления не добавляется в Extender collection.so. Проверка, выполненная приложением, свернута (и, конечно же, само приложение). У меня тоже есть методы ShouldSerialize и Reset в IExtenderProvider. Но мне ничего не помогло. Пожалуйста, объясните мне, как сделать все элементы управления видимыми для расширителя всегда.

Спасибо, Мати

Ответы [ 3 ]

0 голосов
/ 15 февраля 2018

Следующий ответ определенно опаздывает на ФП, но может помочь другим.

У меня была такая же проблема: свойства были либо потеряны, либо вообще не отображались. В моем случае проблема заключалась в том, что тип, указанный в методах ProvideProperty, CanExtend и SetXXX и GetXX, был разным. Например, ProvideProperty и CanExtend указали 'Control' в качестве типа, но в методах SetXXX и GetXXX в качестве первого параметра было указано 'object'.

Итак, как только я убедился, что для каждого типа, указанного в ProvideProperty, у меня совпадают GetXXX и SetXXX, все работает, как и ожидалось.

Может быть, это поможет.

Примечание. После исправления кода мне пришлось перезапустить Visual Studio.

0 голосов
/ 14 сентября 2009

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

В других случаях это происходит из-за того, что вы изменили свойства и методы расширителя, а значения "serialize" больше не подходят.

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