[请求帮助!!]有关控件数组的问题
我动态添加了两组控件数组
TextBox[] txt1 = new TextBox[i]
TextBox[] txt2 = new TextBox[i]
i是根据用户选着设定的大小
控件数组txt2添加了事件txt2[i].Click += new EventHandler(txt2_Click)
private void txt2_Click(object sender, EventArgs e)
{
//这里的事件我想实现txt2[i].text = txt1[i].text
}
请问以上事件应该怎么写?
另外我发现动态添加数组的时候所有控件name属性设置为一样为什么不会发生name重复的错误?
[最优解释]
你需要一个textbox在数组中的索引,你可以在创建textbox时,设置textbox的tag属性为i
private void txt2_Click(object sender, EventArgs e)
{
txt2[Convert.ToInt32((sender as TextBox).Tag)].text = txt1[Convert.ToInt32((sender as TextBox).Tag)].text
}
[其他解释]
TextBox[] txt1 = new TextBox[i]
TextBox[] txt2 = new TextBox[i]
可以将txt1 txt2的tag设成下标 或者name后跟下标
事件中再取出tag 或者取出name trim掉前面的名字
转成数字就是下标了
name属性本来就是个属性 是可以重复的
设计器不能重复
是因为 你改了Name属性
txt1或者txt2这个变量名就变成name的名字了
[其他解释]
第一个问题不知道你什么需求
回答第二个问题,如果你做过Design-Time的东西的话就能理解,在vs里面创建控件,或者改名,等等设计行为都依托于一个host,在更改控件名称的时候会进行名称唯一性检查,而直接创建的控件并不会做这样的操作。同样的,在code behind文件中(xxxx.Designer.cs),直接更改名称也不会报错。因为是通过code的方式,而不是Design的方式进行的。
[其他解释]
((TextBox)sender).Text = txt1[i].Text;