如何在 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) ?
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
。