WPF读写RichTextBox文本

时间:2016-08-07 14:16:27

标签: c# wpf

我是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以避免这种情况?

1 个答案:

答案 0 :(得分:0)

我决定在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中的下拉菜单。 ......还在寻找答案!!!

编辑:

我尝试使用this answer在winforms RichTextBox上方绘制我的wpf下拉菜单。它奏效了,但是调整出错了。

现在,我放弃了WPF和WinForms RichTextBox并且已经使用了AvalonEdit(这太棒了)。它最初是为代码编辑器制作的,但适用于任何类型的RichTextBox替换。

我使用thisthis的混合物来更改文本部分的颜色。