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

Posted

技术标签:

【中文标题】如何在winforms设计器中公开用户控件的整个子控件【英文标题】:How to expose whole sub control of usercontrol at winforms designer 【发布时间】:2012-10-08 10:12:20 【问题描述】:

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

所以代码可能是这样的:

公共部分类 LabelTextbox : UserControl 公共标签文本框() 初始化组件(); [ 类别(“外观”), 可浏览(真), 描述(“内部标签”) ] 公共 DevComponents.DotNetBar.LabelX LabelPart 得到 返回 this.labelx; 放 this.labelx = 值; [ 类别(“外观”), 可浏览(真), 描述(“内部文本框”) ] 公共文本框 TextBoxPart 得到 返回 this.textboxx; 放 this.textboxx = 值;

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

但是当我在设计器中设置用户控件的内部标签属性时, 它不能在 Designer.cs 中制作关系代码。 也就是说客户端设置没有保存。

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

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

【问题讨论】:

【参考方案1】:

使用DesignerSerializationVisibility 属性装饰您的子控件的属性:

[
   Category("Appearance"),
   Browsable(true),
   Description("innerLabel"),
   DesignerSerializationVisibility(DesignerSerializationVisibility.Content)  //<-- here
]
public DevComponents.DotNetBar.LabelX LabelPart 
    get 
        return this.labelx;
    
    set 
        this.labelx = value;
    

【讨论】:

以上是关于如何在winforms设计器中公开用户控件的整个子控件的主要内容,如果未能解决你的问题,请参考以下文章

如何创建悬停的 C# Winforms 控件

Winforms - 如何在设计器中显示/隐藏元素?

如何停止 Visual Studio 为设计器中的控件生成属性设置?

如何在 MFC No CLR 中访问 Winform ActiveX 控件

C#的winform中怎么根据函数找到对应的控件?

WinForm中调用WPF控件