[英]WPF reading and writing RichTextBox text
我對WPF很新,遇到了一個問題。
我有一個富文本框,我設置了它的文本。 然后,每當富文本框文本發生更改(使用事件處理程序)時,我需要檢查它是否等於原始文本。
但是,即使文本沒有改變,代碼也說它是由於在閱讀文本時出現了一條新行。
這基本上就是我在做的事情:(顯示問題的簡化版本)
//Create a new text box
RichTextBox r = new RichTextBox();
//Write Text "Hello World" to the rich text box
r.Document.Blocks.Clear();
r.Document.Blocks.Add(new Paragraph(new Run("Hello World")));
//Read Text "Hello World" from rich text box
string textBoxText = new TextRange(r.Document.ContentStart, r.Document.ContentEnd).Text;
Console.WriteLine("\"" + textBoxText + "\"");
我希望在控制台中看到“Hello World”,但它會給出:
"Hello World
"
因為在此之后有一個新行,它會導致我的代碼出現問題。 是否有更好的方法來讀寫RichTextBox以避免這種情況?
我決定在WPF窗口中使用Windows窗體RichTextBox而不是標准的WPF RichTextBox。
使用xaml有點棘手,所以我主要在代碼隱藏窗口打開窗口時設置它的屬性。
到目前為止,它解決了我所有的問題。
更多信息:
https://msdn.microsoft.com/en-us/library/ms751761(v=vs.110).aspx
https://www.simple-talk.com/dotnet/.net-framework/mixing-wpf-and-winforms/
(我不會將此標記為答案,因為如果您想使用WPF RichTextBox而不是WinForms,則無法解決問題)
編輯:實際上,最好避免使用此方法,因為WinForms控件是在所有WPF控件之上繪制的。 這使我無法使用wpf中的下拉菜單。 ......還在尋找答案!!!
編輯:
我嘗試使用此答案在winforms RichTextBox上方繪制我的wpf下拉菜單。 它工作,但對齊出錯了。
現在,我放棄了WPF和WinForms RichTextBox,並使用了AvalonEdit (這太棒了)。 它最初是為代碼編輯器制作的,但適用於任何類型的RichTextBox替換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.