Страницы

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

четверг, 23 января 2020 г.

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

#c_sharp #winforms


При наследовании, например, от FlowLayoutPanel, в конструкторе прописываю свойства:

class myFlow : FlowLayoutPanel
{
    public myFlow()
    {
        AutoSize = true;
        AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
    }
}


в дизайнере кидаю этот элемент на форму и, например, хочу вернуть обратно AutoSize=false.
Вроде бы меняется и выглядит элемент на форме как нужно, но после ребилда и закрытия-открытия
дизайнера формы свойство снова имеет значение, прописанное в конструкторе. Пробовал
override InitLayout, но эффект тот же.
Как правильно настраивать компоненты, чтобы в дизайнере можно было их поменять?
    


Ответы

Ответ 1



[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; Соответственно из конструктора установку значений данных свойств нужно удалить.

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

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