Страницы

Поиск по вопросам

пятница, 15 марта 2019 г.

Установка свойств наследников стандартных элементов (например, FlowLayoutPanel)

При наследовании, например, от FlowLayoutPanel, в конструкторе прописываю свойства:
class myFlow : FlowLayoutPanel { public myFlow() { AutoSize = true; AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; } }
в дизайнере кидаю этот элемент на форму и, например, хочу вернуть обратно AutoSize=false. Вроде бы меняется и выглядит элемент на форме как нужно, но после ребилда и закрытия-открытия дизайнера формы свойство снова имеет значение, прописанное в конструкторе. Пробовал override InitLayout, но эффект тот же. Как правильно настраивать компоненты, чтобы в дизайнере можно было их поменять?


Ответ

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always),DefaultValue(true) DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public override bool AutoSize { get { return base.AutoSize; } set { base.AutoSize = value; } }
Подсмотрел этот код в исходниках Panel от которого у FlowLayoutPanel наследуется свой AutoSize. Параметр DefaultValue(true) который собственно и делает то, что вам нужно добавил уже сам... Его существование и возможность использования подглядел в тех же исходниках Panel
AutoSizeMode думаю по аналогии должно сработать... Для корректной работы понадобится using System.ComponentModel;
Соответственно из конструктора установку значений данных свойств нужно удалить.

Комментариев нет:

Отправить комментарий