C#自定义控件属性未在designer.cs中初始化

时间:2011-01-07 11:17:56

标签: c# winforms

我有一个继承自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没有更新?

编辑:

只是为了澄清。我不会继承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属性?

0 个答案:

没有答案