哪个属性存储GroupBox包含的控件?

时间:2009-10-06 17:50:14

标签: c# .net winforms

我有一个GroupBox控件,里面有一堆控件,但是当我使用.Controls属性时,它是空的。

是否有其他属性存储这些控件?

编辑:这是组箱代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace CustomControls
{
    public partial class CustomGroupBox : GroupBox
    {
        public CustomGroupBox ( )
        {
            this.OutlineColor = Color.FromArgb ( 5, 5, 5 );
            this.Font = new Font ( "Tahoma", 8.25F, FontStyle.Regular );
        }

        Color outlineColor;

        [DefaultValue ( typeof ( Color ), "5, 5, 5" )]
        public Color OutlineColor
        {
            get { return outlineColor; }
            set { outlineColor = value; Invalidate ( ); }
        }

        [DefaultValue ( typeof ( Font ), "Arial, 8.25pt" )]
        public override Font Font
        {
            get { return base.Font; }
            set { base.Font = value; }
        }

        protected override void OnPaint ( PaintEventArgs pe )
        {
            //painting
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您确定在检查物业时添加了控件吗? GroupBox存储Controls属性中的子控件,就像任何其他容器控件一样。

修改

我无法真正开始推测自定义控件。显然,可以使用您描述的行为创建控件,但我无法理解它的原因。只需创建一个示例Windows窗体项目并将两个按钮拖入其中并从另一个按钮调用MessageBox.Show(groupBox1.Controls.Count.ToString()),就会出现2,如预期的那样。

考虑到您为GroupBox发布的代码,除了真正不属于GroupBox的控件之外,我看不出有任何理由发生这种情况。如果检查其中一个控件的Parent属性,值是什么?

修改2

如果您说您的UserControl包含自定义GroupBox,并且您尝试将UserControl放在Form上并放置控件insde那里的GroupBox,然后就行不通了。表单上的设计者只“知道”UserControl;它不知道(或关心)它包含GroupBox(一方面,设计师默认情况下无法访问该变量,你也不会,因为它是private除非你明确地改变修饰语。)

为了按照您的意愿完全,您将不得不进行必要的提升,使UserControl成为一个容器,但这是一件非常重要的事情。工作量。我建议直接在表单上放置GroupBox

答案 1 :(得分:0)

我看到控件属性填充在我的组框中。然后只需grpMyGroupBox.Controls.Item(index).Name来获取控件的名称。没有多大意义为什么你不会在那里看到它们。