以编程方式创建GroupBox和其中的标签

时间:2018-08-23 19:29:06

标签: c# winforms

我想以编程方式创建一个分组框,并在其中放置标签。现在,我创建了这个,但是经过设计,我有这样的想法:

enter image description here

我正在尝试,但是我不知道如何将标签分配在正确的位置以及如何将其分配到特定的分组框

GroupBox groupBox1 = new GroupBox();
Panel grid1 = new Panel();
Label lbl1 = new Label { Text = "Completed" };
Label lbl2 = new Label { Text = "label" };
Label lbl3 = new Label { Text = "In progress" };
Label lbl4 = new Label { Text = "label" };
//etcetera
groupBox1.Width = 185;
groupBox1.Height = 160;
grid1.Height = 185;
grid1.Width = 160;

我该如何实现?问候  更新

在下面的评论中,我尝试

GroupBox groupBox1 = new GroupBox();
                    this.Controls.Add(groupBox1);
                    Panel grid1 = new Panel();
                    groupBox1.Controls.Add(grid1);
                    groupBox1.Location = new Point(20, 250);
                    grid1.Location = new Point(20, 250);
                    Label lbl1 = new Label { Text = "test" };
                    Label lbl2 = new Label { Text = "Test2" };
                    groupBox1.Name = "TESTTT";
                    groupBox1.Width = 222;
                    groupBox1.Height = 149;

                    grid1.Height = 218;
                    grid1.Width = 145;
                    grid1.Controls.Add(lbl1);
                    grid1.Controls.Add(lbl2);

结果: enter image description here

但是在我的分组框中,没有名称也没有标签,为什么会发生?

2 个答案:

答案 0 :(得分:2)

WinForms中的控件的排列方式使它们彼此驻留。因此,您的Form具有一个Controls集合,该集合本质上是类型Collection的{​​{1}}。因此,如果将Control添加到表单,则必须将其添加到表单的GroupBox集合中。然后,如果将控件添加到Controls,则需要将其添加到GroupBox控件集合。

请记住,您可以执行以下操作:

GroupBox

答案 1 :(得分:0)

解决方案的最简单方法是在设计时就已经创建了代码。代码是在相应表单的designer.cs或designer.vb文件中自动创建的。要查看此文件,请在解决方案资源管理器中单击“显示所有文件”按钮。还是为了您的理解,让我解释一下代码

您已使用创建了分组框     GroupBox groupBox1 =新的GroupBox(); 要在表单上查看此分组框,您需要将此分组框添加到表单     this.Controls.Add(groupBox1);

与面板相同。如果要在组框内添加面板,则    groupbox1.Controls.Add(grid1);

然后在面板内添加所有标签。

您将在表单的designer.cs中找到类似的代码。