如何在 c# 中将文本框数组传递给另一个窗体

本文关键字:数组 窗体 另一个 文本 | 更新日期: 2023-09-27 18:36:58

我是一个 2 个月的 c# 研究者。

我在表单中定义了 3 个文本框数组,我想传递给程序.cs

下面的这些名称被声明为公共名称,它以声明它们的形式工作,但是由于我从其他形式中调用相同的东西,我想将其放在程序中.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 };

在程序中.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[],object[],但它们不起作用并且不接受.除"表单"之外的文本。

我应该在 EraseTextBox() 中定义这个数组时放什么?我的盒子, ?我的盒子1) ?

如何在 c# 中将文本框数组传递给另一个窗体

public static void EraseTextBox(TextBox[] MyBox, TextBox[] MyBox1)
{
    for (int i = 0; i < 9; ++i)
    {
        MyBox[i].Text = "";
        MyBox1[i].Text = "";
    }

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

正如其他人所说,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);
数组

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

例如

TextBox[] _textBoxes = new TextBox[3];

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

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