如何在winforms设计器中公开usercontrol的整个子控件

时间:2012-10-18 03:00:33

标签: winforms user-controls

例如 我想创建一个包含标签和文本框的usercontrol(窗体)。 我想将两个子控件公开为属性,以便我可以 在客户端表单设计器中设置子控件的属性。

因此代码可能是这样的:

 public partial class LabelTextbox : UserControl
    {
        public LabelTextbox()
        {
            InitializeComponent();
        }

        [
           Category("Appearance"),
           Browsable(true),
           Description("innerLabel")
        ]
        public DevComponents.DotNetBar.LabelX LabelPart
        {
            get
            {
                return this.labelx;
            }

            set
            {
                this.labelx = value;
            }
        }


        [
           Category("Appearance"),
           Browsable(true),
           Description("InnerTextbox")
        ]
        public TextBox TextBoxPart
        {
            get
            {
                return this.textboxx;
            }

            set
            {
                this.textboxx = value;
            }
        }
    }

然后我可以在设计师看到它,它看起来像:

enter image description here

但是当我在设计器中设置usercontrol的内部标签属性时, 它无法在designer.cs中创建关系代码。 也就是说不保存客户端设置。

所以我该如何解决这个问题。

顺便说一句,我来自CN,我的英语很差。任何人都可以回答我。

1 个答案:

答案 0 :(得分:6)

使用DesignerSerializationVisibility属性:

装饰子控件的属性
[
   Category("Appearance"),
   Browsable(true),
   Description("innerLabel"),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Content)  //<-- here
]
public DevComponents.DotNetBar.LabelX LabelPart {
    get {
        return this.labelx;
    }
    set {
        this.labelx = value;
    }
}