2011-03-18 92 views
2

我想插入在運行時的文本在RichTextBox,但是當我這樣做,所有以前存在的格式都將丟失。C#:在RichTextBox插入文本導致格式丟失

據我瞭解,該格式將丟失,因爲我重寫RichTextBox中的「文本」屬性時,我按鍵響應事件被稱爲:

(...) 
Text = Text.Insert(SelectionStart, MyText); 
e.Handled = true; 

在一個側面說明,我的RichTextBox的高度根據其內容在運行時計算。

我不得不在RTB插入文本,否則內容將無法正確顯示以下的調整大小(即:出於某種原因,RTB的第一線似乎已滾動起來,只能一旦控制失去了重點就會被看到......見:C#: How to prevent a textbox' content from being scrolled up on Enter?)。

有什麼辦法來插入一個RichTextBox的文字,同時還保持以前所有的格式不變?

非常感謝您的幫助。

+0

WPF或WinForms的? – Snowbear 2011-03-18 21:50:07

+0

我目前使用WinForms。 – 2011-03-18 21:51:41

回答

1

嘗試AppendText代替,其次是ScrollToCaret

+0

感謝您的回答。我嘗試過,但仍然有調整RTB高度時出現的奇怪「向上滾動」錯誤。基本上,除了使用「插入(...)」方法以外,添加文本會導致RTB的第一行滾動出視圖,除非我失去了對控件的注意力。 – 2011-03-18 21:47:27

+0

之後你不能重新向下滾動嗎? – 2011-03-18 22:18:53

+0

我可以手動將其重新向下滾動,但不能以編程方式。用戶抱怨不得不手動完成它,因此我試圖找出一種在運行時直接執行的方法。 – 2011-03-18 22:23:17

2

我相信問題是由完全文本重置造成的(Text = ...)。嘗試使用類似:

SelectionLength = 0; // not sure about this one 
SelectedText = MyText; 
+0

謝謝你的回答。 SelectedText和AppendText的工作方式與您和Mike建議的類似,但由於某種原因,每當行的長度超過RTB的寬度時,RTF內容中會自動添加一個新行(即:\ r \ n),導致第一行線消失。 – 2011-03-18 22:24:36

+0

'由於某種原因'?當您以常規方式將文本添加到richTextBox而不是以編程方式發生時,會發生這種情況嗎?我相信這是完全不同的問題。 – Snowbear 2011-03-18 22:27:55

+0

是的,當它以常規方式添加時也會發生。這是你提到的一個不同的問題,所以我會標記你的答案,Mike的答案是正確的。謝謝。 – 2011-03-18 22:31:24

相關問題