为了账号安全,请及时绑定邮箱和手机立即绑定

从事件处理程序更改 textBox.text

从事件处理程序更改 textBox.text

C#
动漫人物 2022-07-23 09:11:31
似乎无法在这里找到我一生的答案。无论如何,事件处理程序如何更改 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 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

DataReceivedHandler方法被标记static,因此它不能访问实例成员textBox2。删除static能解决问题吗?



查看完整回答
反对 回复 2022-07-23
?
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);

    });

}


查看完整回答
反对 回复 2022-07-23
  • 2 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信