簡體   English   中英

為什么RichTextBox中的間距怪異

[英]Why the Weird Spacing in RichTextBox

我正在通過串行端口接收輸入,並在RichTextBox中顯示數據。 除我在顯示數據時有很多額外的(不一致發生的)間距外,這還行。 見下圖:

在此處輸入圖片說明

在這種情況下,它每兩個刻度顯示一次,但是有時是三個,或者有時沒有。 我不知道為什么會這樣。 有人知道嗎?

編輯 :這是我如何顯示數據(按代碼)。

void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
  string msg = port.ReadExisting();
  DisplayWindow.AppendText(msg);
  DisplayWindow.ScrollToCaret();
}

在我看來,就像SerialPort.NewLine一樣,默認為換行符('\\ n')。 另外,請檢查您是否確實從端口中獲得了一些東西 ,而不僅僅是在RTB后面添加了空行。

屏幕快照中的故障排除代碼確實無法很好地工作。 使用調試器。

更好的是,使用MultiLine設置為trueTextBox而不是RichTextBox TextBox忽略數據中的\\ r字符,並在看到\\ n字符時給出新行。

這是一些示例代碼:

  private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
  {
     String ser_data = this.serialPort1.ReadExisting();
  }

...稍后在回調函數中:

richtextbox.AppendText(ser_data);

在該行之后放置一個斷點以讀取數據。 然后通過超級終端從另一台計算機發送回車。 您會注意到有時收到的數據是\\ r \\ n。 這為您帶來了預期的回報。 但是,有時\\ r與\\ n分開接收。 在這種情況下,您會在富文本框中獲得額外的換行符。 緩沖數據,以便富文本框將\\ r \\ n放在一起,從字符串中刪除其中之一,或者從源計算機中刪除一個(\\ r或\\ n)。 例如,在超級終端中,轉到“文件”->“屬性”->“設置”->“ ASCII設置”,然后取消選中“發送帶有換行符的行尾”。

我知道原始的發布者已經完成了這次討論。 但是,如果您正在閱讀本文,希望對您有所幫助。

感謝Hans和ChrisF的答復。 在進行此操作時,我決定搜索ReadExisting()。 通過一些SO帖子,事實證明這可能是我的問題。 我將其更改為ReadLine(),但不再出現奇怪的換行符。 我將繼續使用此方法,並查看它是否適用於我的其余應用程序。

很奇怪...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM