2013-02-17 115 views
2

我目前正在使用文本框上的可见属性。下面我复制粘贴我的代码片段。我的表单中有几个文本框。这将变得非常繁琐,试图编写它,因为我已经在所有的文本框下面写下了它。有没有办法将我的代码压缩到几行以使文本框可见?TextBox可见属性

public void makeVisible() 
    { 
     textBox1.Visible = true; 
     textBox2.Visible = true; 
     textBox3.Visible = true; 
     textBox4.Visible = true; 
     //etc. 

    } 

回答

2

试试这个:

foreach(Control c in Controls) 
{ 
TextBox tb = c as TextBox; 
if (tb !=null) tb.Visible = false; //or true, whatever. 
} 

对于有限的文本框:

int count = 0; 
int txtBoxVisible = 4; 
foreach(Control c in Controls) 
{ 
    if(count <= txtBoxVisible) 
    { 
     TextBox tb = c as TextBox; 
     if (tb !=null) tb.Visible = false; //or true, whatever. 
     count++; 
    } 
} 

您可以根据您的需要设置txtBoxVisible

+0

+1谢谢,但可以说我总共有8个文本框,但我只想让前4个可见? – CodingWonders90 2013-02-17 07:12:18

+0

正如我上面提到的一些条件,如果文本框的值为null做些什么(隐藏/显示) – coder 2013-02-17 07:16:42

+0

@ Shayharyar-谢谢你扩展它。 – coder 2013-02-17 07:26:05

1

放入阵列和环文本框通过阵列或

把文本框在一个面板,栅格,组,...以及改变容器的可见性。

1

使用一些类似以下内容:

foreach (TextBox textBox in container.Controls.Cast<Control>().OfType<TextBox>()) 
{ 
    textBox.Visible = value; 
} 

请参阅以下内容:

LINQ (Language-Integrated Query)

Enumerable.Cast Method

Enumerable.OfType Method

+0

+1谢谢,但可以说我总共有8个文本框,但我只想让前4个可见? – CodingWonders90 2013-02-17 07:12:53

+1

追加Take(4)到linq语句。 – 2013-02-17 07:13:51

+0

对不起,我是初学者,所以我不确定如何将它纳入你的例子? – CodingWonders90 2013-02-17 07:17:55