从其他线程访问文本框
本文关键字:文本 访问 线程 其他 | 更新日期: 2023-09-27 17:58:13
我正在使用以下代码从另一个线程向文本框写入文本
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在这个函数中变为变量,并使用我打算从另一个线程编写的textbox。
否则,如果我遵循当前的方法,那么如果我想写入十个文本框,我将需要十个SetText函数
只需一个函数就可以完成,甚至不需要代理
private void SetText(TextBox txt, string text)
{
if (txt.InvokeRequired)
{
Invoke((MethodInvoker)(() => txt.Text = text));
}
else
{
txt.Text = text;
}
}
delegate void SetTextCallback(TextBox textBox, string text);
private void SetText(TextBox textBox, string text)
{
if (textBox.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] {textBox, text});
}
else
{
textBox.Text = text;
}
}