繁体   English   中英

C#usercontrol如何访问所有子控件

[英]C# usercontrol how to access all child controls

我在里面定义了一个带有表格布局面板的自定义面板。 但是,当我在winform上使用此控件时,我无法访问表格布局面板属性。 (我希望例如在单元格中添加列或停靠其他控件)。 我尝试将修饰符属性更改为public,但它仍然无效。 如何查看和更改面板布局属性,我该怎么办?

实际上,这个问题可能更通用:如何访问/修改/移动自定义用户控件中包含的控件?

谢谢

您需要在用户控件中公开要修改的属性。 例如,要从用户控件更改表布局控件的列计数属性,必须公开ColumnCount属性:

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

    public int ColumnCount
    { 
        get
        {
            return this.tableLayoutPanel1.ColumnCount;
        }

        set
        {
            this.tableLayoutPanel1.ColumnCount = value;
        }
    }
}

然后,您还可以开始使用某些属性来控制用户控件在Visual Studio中的显示方式,例如,可以像这样修改上述内容:

[DefaultProperty("ColumnCount")]
public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    [Description("Gets or sets the column count of the table layout.")]
    [Category("TableLayout")]
    [DefaultValue(2)]
    public int ColumnCount
    { 
        get
        {
            return this.tableLayoutPanel1.ColumnCount;
        }

        set
        {
            this.tableLayoutPanel1.ColumnCount = value;
        }
    }
}

这会将整个用户控件的默认属性设置为“ColumnCount”,并为列计数属性提供描述,默认值为2,并设置应在设计器属性窗口中显示的类别。 用户控件可以提供更多设计时支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM