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

use*_*971 5 user-controls winforms

例如,我想创建一个包含标签和文本框的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;
            }
        }
    }

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

在此输入图像描述

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

那么我该如何解决这个问题呢.

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

Jay*_*ggs 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;
    }
}
Run Code Online (Sandbox Code Playgroud)