【发布时间】:2013-02-07 10:45:19
【问题描述】:
我正在使用以下代码从另一个线程将文本写入文本框
delegate void SetTextCallback(string text);
private void SetText1(string text)
{
if (this.textBox7.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText1);
this.Invoke(d, new object[] { text});
}
else
{
this.textBox7.Text = text;
}
}
现在我必须将文本写入多个文本框(例如 textBox8、9、10)。我想要同样的功能 SetText1 工作。那么有没有办法让我在这个函数中创建 textBox7 变量并使用我打算从另一个线程编写的文本框。
否则,如果我遵循我目前的方法,那么如果我想写入十个文本框,我将需要十个 SetText 函数
【问题讨论】:
-
为什么不将
TextBox传递给代表? -
我不明白。
this.Invoke在这里做什么?Invoke是Control方法。通常后台线程引用控件作为线程创建参数,然后在控件上调用Invoke。现在,如果您在线程中拥有控制权并在其上调用 Invoke,那么您已经知道您处理调用的控制权是什么。 -
非常感谢,它有帮助!