2010-09-08 52 views
1

我正在使用串口數據將文本寫入多行文本框。目前它將每行都寫入上一行的下方,因此最終的最新文本行不在屏幕上,用戶必須向下滾動才能查看它們。我如何更改代碼,以便在上面的每行中寫入,而不是在上一行文本的下面?我正在使用VS2008中的C#開發Windows Mobile 6設備的程序。我知道這可能是一個簡單的解決方案,但我是C#的新手,似乎無法弄清楚我在做什麼。提前致謝!在多行文本框中降序文本(精簡框架,C#)

更新:

這是最接近於我試圖完成:

private void terminalText(object o, EventArgs e) 
    { 
     tbTerminal.Text += rawString; 
     tbTerminal.Select(tbTerminal.TextLength, 0); 
     tbTerminal.ScrollToCaret(); 
    } 

它不寫上一行上面下一行,因爲我希望,但自動對焦最新的書面文本,因此您不必使用滾動條查看最新的端口數據。我感謝所有的幫助!

回答

1

你總是可以選擇最後一個字符,然後滾動到插入符號,我也不太清楚,如果它與緊湊的框架有什麼不同,但與普通的文本框控件:

textBox.Select(textBox.TextLength, 0); 
textBox.ScrollToCaret(); 
+0

謝謝!這不是我想要的,但它絕對是一種替代解決方案。非常感謝! – ninehundredt 2010-09-08 22:15:45

1

我想你應該能夠只花掉文本的新生產線在以前所有的文字是這樣的面前:

field.Text = receivedLine + "\r\n" + field.Text 

另一種選擇是隨時添加文本到結束,只滾動文本字段結束:

 field.Text += receivedLine + "\r\n" 
     var isNotEmpty = field.TextLength > 0; 
     if (isNotEmpty) 
     { 
      field.Select(field.TextLength - 1, 0); 
      field.ScrollToCaret(); 
     } 

這對於以合理的頻率接收的合理數量的文本來說很好。如果您開始使用大塊文本或大量更新,則可能需要進一步優化。

+0

你不需要空字符串檢查,因爲你可以簡單地做我在我的回答中所說的(也就是不帶走1),並且如果文本框的文本字段爲空,它將滾動到結尾,而不是錯誤(因爲它將變爲0) – Blam 2010-09-08 21:08:47

+0

謝謝,@Blam,我會看看是否讓我簡化了我的代碼。 – 2010-09-08 23:32:15

+0

這實際上是我所理解的問題是尋找..(第一個選項) – Vic 2013-09-12 08:00:14