C#标签在GroupBox中不可见

时间:2012-05-17 19:15:40

标签: c# .net winforms

我有一个循环应该通过DataTable并且为每一行创建一个新的GroupBox,将它的文本设置为一列的值,在该GroupBox中我想要一个带有Text的Label类似于表中的另一列。 这只是代码的一部分!

for (int i = 0; i < tab.Rows.Count; i++)
{
    lblbox[i] = new GroupBox();
    lblbox[i].Text = tab.Rows[i]["text"].ToString();
    lblbox[i].Name = "box no " + i.ToString();
    lblbox[i].Visible = true;        
    this.Controls.Add(lblbox[i]);
    lblbox[i].Location = new Point(5, 55 * i);
    lblbox[i].Height = 50;
    lblbox[i].SendToBack();
    importancelbl[i] = new Label();
    importancelbl[i].Text = "Importance: " + tab.Rows[i]["importance"].ToString();
    importancelbl[i].Name = "implbl" + i.ToString();
    importancelbl[i].Visible = true;
    lblbox[i].Controls.Add(importancelbl[i]);
    importancelbl[i].BringToFront();
    Point locP = new Point();
    locP.X = lblbox[i].Location.X + 5;
    locP.Y = lblbox[i].Location.Y + 15;
    importancelbl[i].Location = locP;

}

当我运行代码时,它会正确创建三个(我的表中有三行)GroupBoxes并创建所有标签,但只有第一个标签在其Groupbox中可见。当我将这些标签添加到Form而不是GroupBox时,所有这些标签都是可见的,但我希望它们放在盒子里...... 我已经尝试了很多东西而且我仍然非常困惑(特别是第一个标签的行为)。我知道这个错误可能很明显而且很愚蠢,但我找不到它!

3 个答案:

答案 0 :(得分:1)

Control.Location相对于其父级,因此请将标签Location设置为(5,15)。

locP.X = 5;
locP.Y = 15;

答案 1 :(得分:0)

我的猜测是,他们在某种程度上重叠,并且让对方以某种方式消失。

你可以尝试在表单中发布表单的图片吗?还要添加所有代码吗?

答案 2 :(得分:0)

尝试执行添加

lblbox[i].Controls.Add(importancelbl[i]);
this.Controls.Add(lblbox[i]);
设置完所有属性后