所以我希望有大约12个文本框(稍后我将在下面添加12个图片框),其中包含产品的名称。但是,虽然目录中没有超过12种产品可供选择,但可能会有更少的产品。
为了节省空间,我想我会创建一个循环,如果目录中有产品,则检查每个循环,如果有,则将产品分配给文本框[i]。
所以基本上,我希望能够将textBox1作为textBox [1],textBox2作为textBox [2]等等。
我尝试过这样做
System.Windows.Forms.TextBox[] array = { textBox1, textBox2, textBox3 };
但似乎我只能在初始化中创建这样的对象,并且在那里创建它似乎在任何其他地方都是不可能的,即使是在相同的形式,所以我可以调用该函数只在表单时显示一次初始化,我想每次有人买任何东西时调用显示方法
答案 0 :(得分:1)
使用List怎么样?
List<TextBox> textboxes = new List<TextBox> { textBox1, textBox2, textBox3 };
为此,您需要对System.Collections.Generic。
的引用之后,您可以使用列表中的编号访问文本框:
textboxes[0]
答案 1 :(得分:0)
如果您的文本框编号一致,则可以通过他们所在的表单或容器的Controls属性访问它们。您可以直接使用他们的名称:
for(int i = 0; i<12;i++)
{
this.Controls["textBox"+i.ToString()].Text = "Something";
}
答案 2 :(得分:0)
如果您已经在设计时添加了12个文本框,则可以执行以下操作:
public partial class Form1 : Form
{
List<TextBox> textboxes; //As a member of the class to be accesible everywhere in the class.
public Form1()
{
InitializeComponent();
textboxes = new List<TextBox> { textBox1, textBox2, textBox3, ... }; //Just to be sure they are already created.
}
然后,您可以通过表单textboxes[i]
中的索引从表单类的任何方法访问它们。
答案 3 :(得分:0)
创建数组或列表的全局变量
System.Windows.Forms.TextBox[] TxtArray;
然后在表单构造函数中进行初始化
InitializeComponent();
您可以添加
这样的行TxtArray = new TextBox[] { textBox1, textBox2, textBox3, ... };