2014-09-10 35 views
1

当在C#中以编程方式在运行时添加标签时,标签的可见性在“this.Controls.Add(whatever)”后变为false,这不是真的。解决此得到什么?this.Controls.Add()visibility = false

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     Label label = new Label(); 
     label.Location = new Point(15, 15); 
     label.Text = "Test"; 
     label.AutoSize = true; 
     MessageBox.Show(Convert.ToString(label.Visible)); 
     this.Controls.Add(label); 
     MessageBox.Show(Convert.ToString(label.Visible)); 
    } 
} 

第一个消息框显示“真”,而第二个消息框显示“假”

+1

得到的值是您要添加的标签不可见的容器? – Servy 2014-09-10 17:25:38

+1

这是准确的。该标签尚不可见,稍后您可以看到该窗口时会发生这种情况。 – 2014-09-10 17:26:10

回答

3

你添加标签还没有被证实(还)形式,所以当然,因为整个表格都是不可见的,所以表格上的标签也不可见。

当窗体显示时,标签将变为可见。

+0

是的,这是正确的。我不确定它为什么最初是真的。 – GenDis 2014-09-10 17:33:29

+0

@DavePerich假设没有父母,开发人员认为没有明智的理由来检查是否可见。 – Servy 2014-09-10 17:36:27

+0

@Servy你知道解决这个问题的方法吗?我需要检查标签的可见性,以便知道如何设置其他标签(在运行时也以编程方式添加)的可见性。 – GenDis 2014-09-10 17:39:47

0

由于其没有添加的是,它默认为真,那么你加它,它从父

+0

我需要可见性的原因是使用它作为一种方法的条件。我如何获得正确的可见性值? – GenDis 2014-09-10 17:35:39

+0

@DavePerich确保标签*实际上是可见的*如果它的重要性是'Visible'属性返回'true'。 – Servy 2014-09-10 17:36:59

+0

不要使用可见性,继承它的子类并添加自己的成员变量来跟踪应用程序是否应该显示或不显示 – Steve 2014-09-11 18:05:23