C#用户控件如何访问所有子控件

4
我定义了一个带有表格布局面板的自定义面板。但是,当我在Winform上使用此控件时,我无法访问表格布局面板属性。(例如,我想添加一列或将其他控件停靠在单元格中)。我尝试将修改器属性更改为公共,但仍然不起作用。我该怎么做才能查看和更改面板布局属性呢?
事实上,这个问题可以更加通用:如何访问/修改/移动包含在自定义用户控件中的控件?
谢谢。
1个回答

8
你需要在用户控件中暴露你想要修改的属性。例如,要更改表格布局控件的列计数属性,在用户控件中,你需要暴露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,并设置应在设计器属性窗口中显示在哪个类别中。针对用户控件,还有更多可添加设计时支持的功能。


1
可以将一些属性添加到设计师的属性窗口中,这是可以的。但我们是否也可以在设计师中添加图形支持,例如显示行和列?或者添加编辑行和列的工具? - Toto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接