Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 哪个属性存储GroupBox包含的控件?_C#_.net_Winforms - Fatal编程技术网

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

C# 哪个属性存储GroupBox包含的控件?,c#,.net,winforms,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 Sys

我有一个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
        }
    }
}

您确定在检查属性时已添加控件吗?GroupBox在controls属性中存储子控件,就像任何其他容器控件一样

编辑

我真的不能开始推测自定义控件。很明显,用您描述的行为创建一个控件是可能的,但我无法理解其原因。只需创建一个示例Windows窗体项目,并将两个按钮拖动到其中,然后从另一个按钮调用MessageBox.ShowgroupBox1.Controls.Count.ToString,就会显示一个2,正如预期的那样

考虑到您为GroupBox发布的代码,除了控件真正不在GroupBox中之外,我看不出发生这种情况的任何原因。如果检查其中一个控件的父属性,值是多少

编辑2

如果您说您有一个包含自定义GroupBox的UserControl,并且您试图将UserControl放在表单上,然后将控件放在GroupBox中,那么这是行不通的。表单上的设计器只知道UserControl;它不知道也不关心它是否包含一个GroupBox,一方面,默认情况下,设计器无权访问该变量,您也无权访问,因为它是私有的,除非您显式更改修饰符


为了完全按照您的意愿完成这项工作,您必须进行必要的提升,以使您的用户控制一个容器,但这是一项非常重要的工作。我建议直接将GroupBox放在表单上。

我看到控件属性填充在我的GroupBox中。然后只需grpMyGroupBox.Controls.Itemindex.Name即可获得控件的名称。没有什么意义,为什么你在那里看不到它们。

是的,我在设计器中添加了它们,并在组框的单击事件中访问它们。但这是一个来自标准groupbox的自定义控件,也许这就是为什么?当我移动groupbox时,所有的控件也会移动。好吧,这很奇怪。my groupbox中控件的父控件返回表单本身,而标准组中的其他控件返回该组。我不知道出了什么问题,所以我将尝试使用一个没有代码的新自定义groupbox。另一个更新:我刚刚用我的自定义groupbox进行了尝试,结果成功了,好吗?我在复合控件中使用了groupbox,但它不起作用。复合控件不起作用有什么原因吗?好的,当我移动复合控件时,包含的控件不会移动。因此,分组功能似乎消失了。