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

标签 c# winforms user-controls parent-child

我定义了一个自定义面板,里面有一个表格布局面板。但是,当我在 winform 上使用此控件时,我无权访问表格布局面板属性。 (例如,我想在单元格中添加一列或停靠其他控件)。我尝试将 modifier 属性更改为 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,并设置它应该在设计器的属性窗口中显示在哪个类别中。用户控件可以做很多事情来添加设计时支持。

关于C# usercontrol 如何访问所有子控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1346533/

相关文章:

c# - 调试 winform 崩溃 - C# [ADPlus + Windbg]

.net - 如何在验证之前访问 NumericUpDown 控件的文本?

qt - 如何将按钮放在 QMenu 或 QAction 控件中?

asp.net - asp 网络用户控件与 angularjs

C# 用户控件需要在最终应用程序中访问外部 cs 文件

c# - 如何永久重命名 C# 项目的 Properties 命名空间

c# - 如何从我的 C# Windows 窗体应用程序的数据库中检索信息

c# - 事件处理程序或回调

C# Socket TCP 发送,消息获取 "stuck"

c# - 从 C# 调用存储过程时出错