似乎無法在這里找到我一生的答案。無論如何,事件處理程序如何更改 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(); } }任何幫助是極大的贊賞
2 回答

SMILET
TA貢獻1796條經驗 獲得超4個贊
這DataReceived是在它自己的線程上,您需要調用 GUI 才能更新文本框。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string Data = serialPort1.ReadExisting();
this.Invoke((MethodInvoker)delegate
{
textBox2.AppendText(Data);
});
}
- 2 回答
- 0 關注
- 112 瀏覽
添加回答
舉報
0/150
提交
取消