【问题标题】:C# Label not visible in GroupBoxC# 标签在 GroupBox 中不可见
【发布时间】:2012-05-17 19:15:40
【问题描述】:

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

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 中可见。当我将这些标签添加到表单而不是 GroupBox 时,它们都是可见的,但我希望它们在框中...... 我已经尝试了几乎所有东西,但我仍然很困惑(尤其是第一个标签的行为)。我知道这个错误可能很明显而且很愚蠢,但我就是找不到!

【问题讨论】:

  • 当您嵌套控件时,我认为位置是 在该控件内的位置,因此当标签位于组框内时,您可以将标签的位置设置为成为组框内的位置。
  • 我通常在将控件添加到容器之前设置位置。否则 Patko 可能是对的。

标签: c# .net winforms


【解决方案1】:

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

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

【讨论】:

  • 谢谢。我说这会很愚蠢。我没有意识到我从 0 开始,所以第一个标签无论如何都会正确设置。
【解决方案2】:

我的猜测是它们以某种方式重叠并以某种方式使彼此消失。

您可以尝试在表格有效和无效时发布表格的图片吗?还要添加你所有的代码?

【讨论】:

    【解决方案3】:

    尝试添加预制件

    lblbox[i].Controls.Add(importancelbl[i]);
    this.Controls.Add(lblbox[i]);
    

    设置所有属性后

    【讨论】:

    • 我已经尝试了所有这些,Patko 的答案是正确的,但是谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多