从事件处理程序更改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的主要内容,如果未能解决你的问题,请参考以下文章

急切求助ASP.NET中的UPDATE数据库记录问题!

C#,按钮编写"单击"(Click)事件处理代码,实现在TextBox中显示所填与所选信息.急急急

使用 textbox.text 更改现有 XML 子值

在 TextBox.Text 中退格后 Regex.IsMatch 不起作用

在.net中能给textbox加ONCLICK事件么

C# windows 应用程序中的全局级错误处理