如何在c#中将textBox数组传递给另一个表单

时间:2013-10-25 20:26:12

标签: c# arrays

我是一个2个月的c#studient。

我在表单中定义了3个textBox数组,我希望传递给program.cs

下面这些名称被声明为public并且它们以声明它们的形式工作,但是当我从其他形式调用同样的东西时,我想将它放在public.cethodes公共的program.cs中

        _textBox = new TextBox[] { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9 };
        _textBox1 = new TextBox[] { textBox10, textBox11, textBox12, textBox13, textBox14, textBox15, textBox16, textBox17, textBox18 };
        _textBox2 = new TextBox[] { dateTxt, deadLineTxt, qtyprodTxt };

在program.cs中,我有以下代码:

public static void EraseTextBox(Form[] MyBox, Form[] MyBox1)

    {
        for (int i = 0; i < 9; ++i)
        {
            MyBox[i].Text = "";
            MyBox1[i].Text = "";
        }

在我的来电表格中,我有这段代码:

GeneralMethodes.EraseTextBox(_textBox, _textBox1); // This works if the code is in the same form.

我尝试使用Type [],string [],Array [],Object [],object [],但它们不起作用,不接受.Text,除了Form。

我应该在EraseTextBox中定义这个数组(?MyBox,?MyBox1)?

3 个答案:

答案 0 :(得分:1)

public static void EraseTextBox(TextBox[] MyBox, TextBox[] MyBox1)

{
    for (int i = 0; i < 9; ++i)
    {
        MyBox[i].Text = "";
        MyBox1[i].Text = "";
    }

可能你的错误是你在EraseTextBox上使用Form []而不是TextBox []

答案 1 :(得分:0)

正如其他人所说,EraseTextBox应接受TextBox[]

除了修改数组参数的类型之外,在EraseTextBox中你应该真正偏离数组的长度而不是硬编码的上限。 EraseTextBox函数应该使用数组的长度来确定何时停止迭代。使用硬编码上限,您可以使用代码并且不清除所有文本框,或者获得IndexOutOfRangeException

您还应该考虑不接受两个阵列。当一个数组的长度与另一个数组的长度不匹配时,会发生什么,一个或另一个不会被完全清除,或者可能发生异常。

public static void EraseTextBoxes(TextBox[] boxes)
{ 
    for (var i = 0; i < boxes.Length; ++i)
        boxes[i].Text = "";
}

然后你这样称呼它:

EraseTextBoxes(_textBox);
EraseTextBoxes(_textBox1);

答案 2 :(得分:-1)

数组是具有特定类型的对象的集合。 你说你想要一个文本框数组,所以你想声明一个可以容纳许多TextBox的数组。

例如,

TextBox[] _textBoxes = new TextBox[3];

会创建一个可容纳4 TextBox个。

的数组

在您的情况下,将Form[] MyBox更改为TextBox[] MyBox