При наследовании, например, от 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;
Соответственно из конструктора установку значений данных свойств нужно удалить.
Комментариев нет:
Отправить комментарий