从事件处理程序更改textBox.text
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从事件处理程序更改textBox.text相关的知识,希望对你有一定的参考价值。
似乎无法在这里为我的生活找到答案。无论如何,事件处理程序怎么能改变Form的textBox.text?
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
//Do what ever you want with the data
textBox2.Text = "test"; //alas, this doesn't work
}
按下按钮时会创建事件处理程序
private void button3_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
serialPort1.RtsEnable = true;
serialPort1.DtrEnable = true;
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
serialPort1.Open();
}
}
任何帮助是极大的赞赏
答案
DataReceivedHandler
方法标记为static
,因此无法访问实例成员textBox2
。删除static
解决问题了吗?
另一答案
DataReceived
在它自己的线程上,你需要调用GUI才能更新文本框。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string Data = serialPort1.ReadExisting();
this.Invoke((MethodInvoker)delegate
{
textBox2.AppendText(Data);
});
}
以上是关于从事件处理程序更改textBox.text的主要内容,如果未能解决你的问题,请参考以下文章
C#,按钮编写"单击"(Click)事件处理代码,实现在TextBox中显示所填与所选信息.急急急