代码之家  ›  专栏  ›  技术社区  ›  Stan

visual studio richtext框不显示文本

  •  -1
  • Stan  · 技术社区  · 8 年前

    我使用的是Visual studio 2017,我有一个RichTextBox,在设置时不显示文本:

    public void ArduinoDataRecived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    { 
        SerialPort TempSerial = (SerialPort)sender;
        ConsoleTextBox.AppendText(TempSerial.ReadLine());
    }
    

    代码运行时没有错误,每当我调用 MessageBox.Show(ConsoleTextBox.text) 它显示串行端口发送的文本,但文本框不显示。

    如果我有一个完全不同的方法来设置文本,那么它会工作吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Soonts    8 年前

    可能是线程问题。这里有一个复制粘贴 the documentation :

    当数据为时,在辅助线程上引发DataReceived事件 从SerialPort对象接收。因为此事件是在 次线程,而不是主线程,试图修改一些 主线程中的元素(如UI元素)可能引发 线程异常。如果有必要修改主体中的图元 窗体或控件,使用Invoke将更改请求发回 正确线程上的工作。

    P、 在使用System.IO.Ports之前。串行端口:请确定 to read this . And this 不幸的是,这些问题在.NET 4.5.2中仍然没有得到解决。不久前,我将串行通信代码从C#移植到C++中,以使我的软件为所有用户可靠地工作。但如果它在您的机器上工作,而您没有使用商业软件System.IO.Ports。串行端口可能仍然适合您。