我是一个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)?
答案 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
。