[英]Linking dynamically created text boxes and labels
我创建了一个TextBoxes数组和一个Labels数组。 当信息在文本框中更新时,我希望它更改标签。 我将如何做到这一点? 下面是我的代码。 我还没有创建我认为是我需要帮助的部分的EvenHandler。 全部使用Windows应用程序形式的C#。
textBoxes = new TextBox[value];
labels = new Label[value];
for (int i = 1; i < value; i++)
{
textBoxes[i] = new TextBox();
textBoxes[i].Location = new Point(30, ToBox.Bottom + (i * 43));
labels[i] = new Label();
labels[i].Location = new Point(TopBox3[i].Width + 140, TopBox3[i].Top +3);
textboxes[i].ValueChanged += new EventHandler(this.TextBox_ValueChanged) ;
this.Controls.Add(labels[i]);
this.Controls.Add(textBoxes[i]);
}
您可以记住Tag属性中TextBox的索引
textBoxes[i].Tag = i;
然后在事件处理程序中使用此值来获取相应的标签(假设您将labels数组作为局部变量保存)
protected void TextBox_ValueChanged(object sender, EventArgs e)
{
TextBox textbox = sender as TextBox;
if(textbox==null)
return;
int index = Convert.ToInt32(textbox.Tag);
if(index >= 0 && index < this.labels.Length)
{
Label label = this.labels[index];
/* ... */
}
}
您应该这样写:
private void textBox1_ValueChanged(object sender, EventArgs e)
{
TextBox changedTxt = sender as TextBox;
for (int i = 1; i < value; i++)
if (textBoxes[i] == changedTxt)
{
Label lblToChange = labeld[i];
lblToChange.Text = changedTxt.Text;
break;
}
}
在该方法中,文本已更改的TextBox作为“发送者”传递。 您需要为它查看数组,因此可以识别索引“ i”,该索引可用于访问相应的Label并设置其文本。
如蒂姆所说,顺便说一句,事件是TextChanged,而不是ValueChanged。 此外,请注意,文本中的每次更改都会触发该事件,即,一旦您按下一个键,标签就会被更新。 如果您只想在用户输入完文本后才更新标签,则应使用“离开”事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.