2017-01-08 18 views
-1

を表示していない私は、Visual Studio 2017を使用していると私は、私はそれを設定したときにテキストを表示しないリッチテキストボックスを持っている:Visual Studioのリッチテキストボックスは、テキスト

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

コードがエラーなしで実行され、いつでも私が呼びますMessageBox.Show(ConsoleTextBox.text)シリアルポートが送信したテキストが表示されますが、テキストボックスには表示されません。

テキストを設定する方法がまったく違うのであれば、それは機能しますか?

+0

コードを表示するpls !!! –

答えて

0

おそらくスレッドの問題です。ここでthe documentationからのコピー&ペーストです:

データがSERIALPORTオブジェクトから 受信したときにDataReceivedイベントがセカンダリスレッドで発生します。このイベントはメインスレッドではなく セカンダリスレッドで発生するため、UI要素などのメインスレッドの一部の 要素を変更しようとすると、 スレッド例外が発生する可能性があります。メインの フォームまたはコントロール内の要素を変更する必要がある場合は、適切なスレッドで を実行するInvokeを使用して変更要求をポストして戻してください。

P.S. System.IO.Ports.SerialPortを使用する前に、必ずto read thisを確認してください。 And this。残念ながら、問題はまだ.NET 4.5.2では修正されていません。ちょっと前に、シリアル通信コードをC#からC++に移植して、ソフトウェアをすべてのユーザーに対して確実に動作させるようにしました。しかし、それがあなたのマシンで動作し、商用ソフトウェアで作業していない場合、System.IO.Ports.SerialPortはまだあなたのために良いかもしれません。

関連する問題