【问题标题】:C# usercontrol how to access all child controlsC# usercontrol如何访问所有子控件
【发布时间】:2009-08-28 11:51:09
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: c# winforms user-controls parent-child


    【解决方案1】:

    您需要在用户控件中公开要修改的属性。例如,要更改表格布局控件的列计数属性,您必须从您的用户控件中公开 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,并设置应在设计器的属性窗口中显示的类别。用户控件可以做很多事情来添加设计时支持。

    【讨论】:

    • 可以将一些属性添加到设计器的属性窗口。但是我们是否也可以添加图形支持,例如要在设计器中显示的行和列?还是编辑行列工具?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多