C#参数传递List <t> </t>

时间:2014-08-17 03:26:27

标签: c# parameters

我在C#上以方法方式清除文本文本框中的代码:

public void clearThis(List<TextBox> txtbox){
    foreach (TextBox nTxtbox in txtbox){
        nTxtbox.Text = "";
    }
}

需要帮助,如何通过我的文本框:

clearThis(Arrays.asList(textbox1,textbox2,textbox3)); //something like this method.

这是我的示例代码:

private void btnCancel_Click(object sender, EventArgs e){
    clearThis();
}

3 个答案:

答案 0 :(得分:2)

您可以使用List<T>构造函数和collection initializer syntax

clearThis(new List<TextBox>() { textbox1, textbox2, textbox3 });

您还可以更改方法以获取TextBox[]数组,并使用params modifier进行标记:

public void clearThis(params TextBox[] txtbox){
    foreach (TextBox nTxtbox in txtbox){
        nTxtbox.Text = "";
    }
}

之后,您可以这样称呼它:

clearThis(textbox1, textbox2, textbox3);

答案 1 :(得分:0)

首先,我会将签名更改为接受IEnumerable<TextBox>而不是List<TextBox>。您唯一要做的就是枚举参数,因此您需要的唯一功能是可枚举的功能。这将允许您传递任何TextBox对象序列,而不仅仅是列表。

其次,我们必须弄清楚你需要哪些文本框。如果你已经知道自己想要什么,那么你可以简单地将它们放入TextBox[](这是一个可枚举的):

clearThis(new TextBox[] { txtOne, txtTwo, txtThree });

或者,您可以传入其他一些可枚举的内容,例如:

clearThis(Controls.OfType<TextBox>());

(请注意,这会进行浅层搜索。要执行深度搜索,请考虑使用我为其他答案编写的this method。然后您只需执行clearThis(GetControlsOfType<TextBox>(this))。)

答案 2 :(得分:0)

如果要清除表单上的TextBox,可以使用此方法

void ClearAllText(Control formTest)
{
    foreach (Control c in formTest.Controls)
    {
      if (c is TextBox)
         ((TextBox)c).Clear();
      else
         ClearAllText(c);
    }
}