1
我的问题是改变大量的另一个线程的TextBox.text比UI线程。 像这样:如何更改比UI线程更多的另一个线程的TextBox.text(使用相同的功能)?
string bufferSerial;
.
.
.
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
bufferSerial += serialPort1.ReadLine();
TextBox1.text = bufferSerial;
TextBox2.text = bufferSerial;
TextBox3.text = bufferSerial;
TextBox4.text = bufferSerial;
TextBox5.text = bufferSerial;
TextBox6.text = bufferSerial;
TextBox7.text = bufferSerial;
.
.
.
.
.
.
TextBoxN.text = bufferSerial;
}
如果我试图做到这一点我有一个错误:控制“textBox1的”从比它创建的线程以外的线程访问。
要改变一个文本框,我可以使用此解决方案:
delegate void SetTextCallback(string text);
private void SetText(string text)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
,然后调用这样的功能:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
bufferSerial += serialPort1.ReadLine();
SetText(bufferSerial);
}
但是,如果我需要改变很多BoxText我有为每一个创建一个函数?
谢谢你的帮忙! 此致敬礼。
您可以将您正在使用的语言添加到标签吗? – 2013-03-02 15:08:07