WPF阅读和编写RichTextBox文本

本文关键字:RichTextBox 文本 WPF | 更新日期: 2023-09-27 18:01:08

我是WPF的新手,遇到了一个问题。

我有一个丰富的文本框,我把它设置为文本。然后,每当丰富的texbox文本发生更改(使用事件处理程序(时,我都需要检查它是否等于原始文本。

但是,即使文本没有改变,代码也会说这是由于在阅读文本时出现了一行新行。

这基本上就是我正在做的:(一个显示问题的简化版本(

//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阅读和编写RichTextBox文本

我决定在WPF窗口中使用Windows Forms 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替换。

我使用了这个和这个的混合物来改变文本部分的颜色。