取控件的visible属性时总是false。
private   void   button1_Click(object   sender,   EventArgs   e) 
                         { 
                                     ClassLibrary1.Form1   fo   =   new   ClassLibrary1.Form1(); 
                                     foreach   (Control   ct   in   fo.Controls) 
                                     { 
                                                 MessageBox.Show(ct.Name   +   ct.Visible.ToString()); 
                                     } 
                         } 
 我写了上面一段代码取某一窗体内控件的名称和Visible属性可是不管Visible是否是false取出来的总是false这是怎么回事?请大家帮忙看看,非常感谢!
------解决方案--------------------因为fo的Visible就是False,没有被显示出来,所以他里面的所有控件都是不可见状态。
------解决方案--------------------当然是FALSE.  你FO都没显示
------解决方案--------------------刚做了个试验,当窗体不可见时,比如没有调用 Show,或调用 Show 之后又调用 Hide,那么子控件的 Visible 返回 false。
------解决方案--------------------不太懂你的目的,但绕过去还是可以的   
 将空间visible属性本来是true改成false的原因,是由于InitializeComponent初始化控件的时候,将一个可见的控件,放入一个不可见的control里了,所以属性自动改为不可见。   
 你要是想绕过去,就把InitializeComponent函数里面该控件的内容提出来,将定义,初始化内容放在构造函数的 InitializeComponent()之下   
 将this.Controls.Add(this.comboBox1);放到Form1_Load函数里,使控件在show后才添加进可见窗体里面。
------解决方案--------------------如果确实要取控件的Visible的值,直接取一定是不行的,因为它是否可见还取决于父控件的可见,按楼主的意思,如果确实想取设计时的设置好的那个值,可以用如下的方法来得到:   
 private void button1_Click(object sender, EventArgs e) 
 { 
 	ClassLibrary1.Form1 fo = new ClassLibrary1.Form1(); 
 	foreach (Control ct in fo.Controls) 
 	{ 
 		MethodInfo mi = ct.GetType().GetMethod( "GetState ", BindingFlags.Instance | BindingFlags.NonPublic); 
 		if (mi != null) 
 		{ 
 			object objVisible = mi.Invoke(ct, new object[] { 2 }); 
 			MessageBox.Show(ct.Name + objVisible.ToString()); 
 		} 
 	} 
 }