我有一个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
}
}
}
答案 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来获取控件的名称。没有多大意义为什么你不会在那里看到它们。