0

我是 2 个月的 c# 学生。

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

下面的那些名称被声明为公共的,它以声明它们的形式工作,但是当我从其他形式调用相同的东西时,我想把它放在公共 GeneralMethodes 下的 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[] 但它们不起作用并且不接受除 Form 之外的 .Text。

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

4

3 回答 3

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[]

于 2013-10-25T20:34:29.483 回答
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);
于 2013-10-25T20:48:02.293 回答
-1

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

例如,

TextBox[] _textBoxes = new TextBox[3];

将创建一个可以容纳 4 个TextBoxes 的数组。

在您的情况下,更改Form[] MyBoxTextBox[] MyBox.

于 2013-10-25T20:39:59.527 回答