代码之家  ›  专栏  ›  技术社区  ›  Toto

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

  •  3
  • Toto  · 技术社区  · 15 年前

    我定义了一个自定义面板,其中有一个表布局面板。但是,当我在WinForm上使用此控件时,我无法访问表布局面板属性。(例如,我希望在单元格中添加列或停靠其他控件)。我试图将修饰符属性更改为public,但它仍然不起作用。为了查看和更改面板布局属性,我可以做什么?

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

    谢谢

    1 回复  |  直到 15 年前
        1
  •  7
  •   Stuart Grassie    15 年前

    需要在用户控件中公开要修改的属性。例如,要更改表布局控件的Column Count属性,必须从用户控件中公开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”,并为ColumnCount属性提供说明、默认值2,并设置应在设计器的“属性”窗口中显示的类别。使用用户控件添加设计时支持还有很多功能。