Могу ли я изменить свойства унаследованных элементов управления во время разработки? - PullRequest
4 голосов
/ 23 марта 2009

Я использую визуальное наследование, и мне было интересно, есть ли способ изменить свойства унаследованных элементов управления во время разработки, предпочтительно в конструкторе форм. Если нет, то в коде конструктора.

Мой элемент управления объявлен как Public в базовом классе. Я могу получить к нему доступ в коде дочерней формы, но не в конструкторе форм. Это просто невозможно?

Ответы [ 3 ]

3 голосов
/ 05 июня 2009

В визуальную студию накладываются ограничения на визуальное наследование. К сожалению, производные формы \ usercontrols не могут изменять элементы управления, содержащие коллекции в базе, а именно DataGridViewRows, ToolStrips, ListViewColumns и т. Д.

Отчет об ошибках Microsoft

Есть способы обойти это в определенных ситуациях. Создайте защищенное свойство в базовом классе, которое предоставляет точные свойства элемента управления, который вы хотите изменить (DataGridView.BackgroundColor или ListView.Columns).

Ваша базовая форма должна иметь возможность доступа к этому свойству для изменения необходимых компонентов. Я сделал это для ListView.Columns и DataGridView.rows успешно, однако ToolStrip.Items не будет работать.

2 голосов
/ 23 марта 2009

Кажется, он работает только для определенных элементов управления, но не для всех, и я не могу понять, почему. В моей базовой форме у меня есть TabControl, в котором есть ComboBox, ToolStrip и DataGridView. Все они установлены в Public, но я могу изменять только свойства ComboBox, но не два других элемента управления.

Понятия не имею, почему это так.

0 голосов
/ 23 марта 2009

Вам нужно изменить видимость вашего контроля. Поместите модификаторы свойства элемента управления в открытый доступ и перекомпилируйте проект, после чего вы сможете изменить свойства унаследованного элемента управления.

...