我有4个文本框,我写了4个函数,在每个函数中我想要一个文本框可见而其他文件框是真的。
function1()
{
Txtbox1.visible=true;
Txtbox2.visble=false;
Txtbox3.visible=false;
TxtBox4.visible=false;
}
同样我写了3个函数,使其他文本框的可见性为true。如何进行代码优化c#,Asp.net
答案 0 :(得分:4)
设置TextBox
数组。如
TextBox[] textboxes = { TxtBox1, TxtBox2, TxtBox3, TxtBox4 };
然后你可以编写一个函数来设置索引的可见性。
void SetVisibility(int index)
{
// do index validation
textboxes[index].Visible = true;
for (int i = 0; i < textboxes.Length; i++)
{
if (i != index) textboxes[i].Visible = false;
}
}
现在,您可以拨打function1(), function()2, // etc.
。
SetVisibility(0), SetVisibility(1)
答案 1 :(得分:4)
编写一个函数,将所有4个控件设置为false,然后将所需的控件(作为参数传递)设置为true:
private void ShowTextBox(TextBox target)
{
Txtbox1.Visible = false;
Txtbox2.Visible = false;
Txtbox3.Visible = false;
Txtbox4.Visible = false;
target.Visible = true;
}
然后调用要在文本框实例中传递的函数:
ShowTextBox(Txtbox1);
答案 2 :(得分:0)
与其他人类似,您也可以使用LINQ以不同的方式执行此操作。
TextBox[] allTextBoxes = { TxtBox1, TxtBox2, TxtBox3, TxtBox4 };
void SetVisibility(TextBox visibleTextBox)
{
allTextBoxes.Except(new TextBox[] { visibleTextBox })
.ToList()
.ForEach(t => t.Visible = false);
visibleTextBox.Visible = true;
}
用法:
SetVisibility(Txtbox1);
你也可以这样做,这样你就可以设置多个(或者没有,所以都隐藏)同时可见(还有更多的方法可以做到这一点):
void SetVisibility1(params TextBox[] visibleTextBoxes)
{
var visibleList = visibleTextBoxes.ToList();
foreach (TextBox t in allTextBoxes)
{
t.Visible = visibleList.Contains(t);
}
}
void SetVisibility2(params TextBox[] visibleTextBoxes)
{
allTextBoxes.Except(visibleTextBoxes).ToList().ForEach(t => t.Visible = false);
visibleTextBoxes.ToList().ForEach(t => t.Visible = true);
}
void SetVisibility3(params TextBox[] visibleTextBoxes)
{
var visibleList = visibleTextBoxes.ToList();
allTextBoxes.ToList().ForEach(t => t.Visible = visibleList.Contains(t));
}