Свойства пользовательского элемента управления C # не инициализированы в designer.cs - PullRequest
0 голосов
/ 07 января 2011

У меня есть пользовательский элемент управления, который наследуется от Button. Этот пользовательский элемент управления предоставляется другим пользовательским элементом управления, который наследуется от Panel

Когда я добавляю свою пользовательскую панель в конструктор, я могу установить свойства для своей пользовательской кнопки. Однако, если я установлю, например, свойство Visible, конструктор не будет обновлен. Поэтому при запуске формы свойство Visible не изменяется.

В своем классе пользовательской панели я добавил атрибут [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] в свойство пользовательского элемента управления, но это не работает.

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public PanelButton ButtonSave
{
    get { return _btnSave; } // btnSave is a custom control which inherits from Button
}

Почему файл designer.cs не обновляется?

EDIT:

Только для уточнения. Я не наследую от UserControl, я наследую от Button:

public abstract class BaseButton : Button
{
    #region Member variables
    private ButtonPanel _panel;
    #endregion

    /*rest of the code*/
}

Полная картина выглядит так:

public partial class ButtonPanel : UserControl (пользовательский элемент управления и имеет собственный designer.cs)

public abstract class BaseButton : Button (служит базовой кнопкой. Используется для добавления кнопок на кнопку панели)

public class PanelButton : BaseButton (используется в коде клиента для добавления кнопок)

РЕДАКТИРОВАТЬ II:

Я думаю, что нашел проблему. При инициализации кнопок я установил для свойства Visible значение false, например:

// initialize button
private PanelButton _btnSave = new PanelButton(Properties.Resources.disk_blue) {Visible = false};

// Property for button
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public PanelButton ButtonSave
{
    get { return _btnSave; }
    set { _btnSave = value; }
}  

Когда в конструкторе изменяется свойство ButtonSave Visible, оно ничего не делает с ним. Когда я оставляю {Visible = false};, кнопка всегда видна, независимо от того, является ли свойство ложным или истинным, не имеет значения.

Как я могу использовать конструктор для установки свойства Visible?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...