在不同的事件处理程序中以编程方式引用添加控件?
referencing programatically added controls in a different event handler?
好的,所以我有一个程序,其中添加了一些文本框,如下所示:
TextBox textbox = new TextBox();
textbox.Location = new Point(100, 100);
this.Controls.Add(textbox)
在此之后我创建了一个按钮:
Button button = new Button();
button.Text = String.Format("Calculate");
button.Location = new Point(70, 70);
this.Controls.Add(button);
因为我要添加这个,所以我需要创建我自己的事件处理程序:
button.Click += new EventHandler(button_Click);
我遇到的问题是引用我在我创建的事件处理程序中创建的文本框。
如有任何帮助,我们将不胜感激。
使用名称 属性 来找到它:
textbox.Name = "myTextBox";
void button_Click(object sender, EventArgs e) {
if (this.Controls.ContainsKey("myTextBox")) {
TextBox tb = this.Controls["myTextBox"] as TextBox;
MessageBox.Show(tb.Text);
}
}
只需存储对文本框的 class 级引用,以便您可以在按钮事件处理程序中引用它。
另一种选择是在按钮的标记 属性 中存储对文本框的引用:
button.Tag = textbox;
然后您可以在按钮点击处理程序中检索:
void button_Click(object sender, EventArgs e)
{
TextBox tb = (TextBox)((Button)sender).Tag;
MessageBox.Show(tb.Text);
}
好的,所以我有一个程序,其中添加了一些文本框,如下所示:
TextBox textbox = new TextBox();
textbox.Location = new Point(100, 100);
this.Controls.Add(textbox)
在此之后我创建了一个按钮:
Button button = new Button();
button.Text = String.Format("Calculate");
button.Location = new Point(70, 70);
this.Controls.Add(button);
因为我要添加这个,所以我需要创建我自己的事件处理程序:
button.Click += new EventHandler(button_Click);
我遇到的问题是引用我在我创建的事件处理程序中创建的文本框。
如有任何帮助,我们将不胜感激。
使用名称 属性 来找到它:
textbox.Name = "myTextBox";
void button_Click(object sender, EventArgs e) {
if (this.Controls.ContainsKey("myTextBox")) {
TextBox tb = this.Controls["myTextBox"] as TextBox;
MessageBox.Show(tb.Text);
}
}
只需存储对文本框的 class 级引用,以便您可以在按钮事件处理程序中引用它。
另一种选择是在按钮的标记 属性 中存储对文本框的引用:
button.Tag = textbox;
然后您可以在按钮点击处理程序中检索:
void button_Click(object sender, EventArgs e)
{
TextBox tb = (TextBox)((Button)sender).Tag;
MessageBox.Show(tb.Text);
}