C # 3.5 Winforms ...
Итак, я недавно обнаружил IExtenderProvider и то, как его можно использовать для расширения элементов управления дополнительными свойствами.
В проекте-прототипе, который я настраивал, я ставил точку останова на метод "set" для своего свойства extendee, и когда форма загружалась, я мог видеть, как метод "set" выполняется для каждого элемента управления в форме; это именно то, что я хотел. После успешного прототипа я внедрил компонент extender в свой основной проект. Все формы в моем проекте наследуются от базовой формы, в которую я добавил свой компонент-расширитель. В базовой форме я установил модификатор компонента-расширителя в public, чтобы он был доступен для формы, наследующей эту базовую форму.
Делая то же самое, прежде чем я добавил точку останова в метод "set" для моего свойства extendee, но этот метод не выполняется для элементов управления в форме (но только для элементов управления в базовой форме). ПОМОГИТЕ!
Мне, вероятно, следует добавить, что мой источник контролировал мои формы, и поэтому большинство из них проверены (т.е. заблокированы от модификации). Для форм, которые я извлек и изменил свойство провайдера; В файле конструктора я заметил, что у всех элементов управления есть дополнительный оператор, который вызывает метод «set» свойства провайдера.
this.MyProvider1.SetMyProperty (this.txtTextBox1, false);
Прав ли я, полагая, что для работы компонента-расширителя он должен физически изменить файл конструктора или он должен справиться с заблокированными файлами и, следовательно, динамически вызывать метод set? Я предполагаю, что если он действительно должен изменить файл конструктора, то это не проблема для новых форм или форм, которые модифицируются после добавления компонента-расширителя в проект - но это будет проблемой, если у вас есть 101 форма, все заблокированные источником -safe ...
Буду признателен за любые мысли ...