Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在设置控件可见性时消除代码重复?_C# - Fatal编程技术网

C# 如何在设置控件可见性时消除代码重复?

C# 如何在设置控件可见性时消除代码重复?,c#,C#,我有4个文本框,我写了4个函数,在每个函数中我希望有一个文本框是可见的真的其他假的 function1() { Txtbox1.visible=true; Txtbox2.visble=false; Txtbox3.visible=false; TxtBox4.visible=false; } 类似地,我还编写了3个函数,使其他文本框的可见性为true。如何进行代码优化c#,Asp.net设置文本框数组。比如 TextBox[] textboxes = { Tx

我有4个文本框,我写了4个函数,在每个函数中我希望有一个文本框是可见的真的其他假的

function1()
{
    Txtbox1.visible=true;
    Txtbox2.visble=false;
    Txtbox3.visible=false;
    TxtBox4.visible=false;
}

类似地,我还编写了3个函数,使其他文本框的可见性为true。如何进行代码优化c#,Asp.net

设置
文本框
数组。比如

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;
    }
}
void SetVisibility(int索引)
{
//进行索引验证
文本框[index].Visible=true;
对于(int i=0;i

因此,现在不再调用
function1()、function()2、//等
,而是调用
SetVisibility(0)、SetVisibility(1)
设置
文本框
数组。比如

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;
    }
}
void SetVisibility(int索引)
{
//进行索引验证
文本框[index].Visible=true;
对于(int i=0;i

因此,现在不再调用
function1()、function()2、//等
,而是调用
SetVisibility(0)、SetVisibility(1)
编写一个函数,将所有4个控件都设置为false,然后将所需控件(作为参数传递)设置为true:

然后调用传递要显示的textbox实例的函数:

ShowTextBox(Txtbox1);

编写一个函数,将所有4个控件设置为false,然后将所需控件(作为参数传递)设置为true:

然后调用传递要显示的textbox实例的函数:

ShowTextBox(Txtbox1);

与其他类似,您也可以使用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);
您也可以这样做,以便可以将多个(或无,因此所有都隐藏)同时设置为可见(还有更多方法可以做到这一点):


与其他类似,您也可以使用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);
您也可以这样做,以便可以将多个(或无,因此所有都隐藏)同时设置为可见(还有更多方法可以做到这一点):