我的表单frmControlSystem连接到外部数据源,我从该外部数据源接收进入数组的字符串。此表单打开另一个表单frmResult_Vote以显示该信息。第二种形式将字符串数组作为参数以及要显示的项目数的整数和另一个参数传递给参数。第二种形式将为所需的文本框正确启用.Visible。但是只有第一个textBox实际上会在其中显示文本;其他为空。
第一种形式使用此代码显示第二种形式:
frmResult_Vote results = new frmResult_Vote(memberDisplayName, iMemberQty, ConstMembersPlusOne);
results.Show()
第二种形式创建了一个文本框数组,因此我可以循环并仅使我想使用的文本框以及填充.Text属性可见。这段代码是:
public frmResult_Vote(string[] myVoteMembers, int iMemberQty, int ConstMembersPlusOne)
{
InitializeComponent();
textBox1.Text = "FU";
TextBox[] memberTextBoxes = new TextBox[ConstMembersPlusOne];
memberTextBoxes[1] = txtDisplayName1; memberTextBoxes[2] = txtDisplayName2; memberTextBoxes[3] = txtDisplayName3; memberTextBoxes[4] = txtDisplayName4;
memberTextBoxes[5] = txtDisplayName5; memberTextBoxes[6] = txtDisplayName6; memberTextBoxes[7] = txtDisplayName7; memberTextBoxes[8] = txtDisplayName8;
memberTextBoxes[9] = txtDisplayName9; memberTextBoxes[10] = txtDisplayName10; memberTextBoxes[11] = txtDisplayName11; memberTextBoxes[12] = txtDisplayName12;
for (int i = 1; i <= iMemberQty; i++)
{
memberTextBoxes[i].Text = myVoteMembers[i];
memberTextBoxes[i].Visible = true;
}
}
当显示第二个表单时,将启用适当数量的textBox,但是只有第一个将显示文本。
第二个表单上有12个文本框,分别名为txtDisplayName1至txtDisplayName12。这些是我用来填充TextBox数组的内容。
最后一点奇怪(至少对我来说):第二种形式上的每个其他文本框都使用不同的BackColor绘制。当第一种形式show()第二种形式时,它永远不会显示;它们都以白色显示。
为了使something显示在其他文本框中,我还尝试专门通过非数组名称进行调用,如下所示:
txtDisplayName1.Text = myVoteMembers[1];
这根本没有做任何事情。
我还在第二个表单上放置了一个随机的textBox,并尝试用此行填充它:
textBox1.Text = "FU";
该textBox也不会填充...但是如果我注释掉for循环,则textBox1.Text分配将起作用。同样,它也被称为其他。
我已验证myVoteMembers数组中包含字符串,当我逐步执行代码时,可以看到此处发生分配:
memberTextBoxes[i].Text = myVoteMembers[i];
我在这里想念什么?
for (int i = 1; i <= iMemberQty; i++)
{
memberTextBoxes[i].Text = myVoteMembers[i];
memberTextBoxes[i].Visible = true;
}
myVoteMembers数组将从0开始,并且具有iMemberQty个项目。这意味着0-iMemberQty-1索引。当您访问第iMemberQty个索引时,该索引将使Bound超出异常范围]