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窗口中使用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替换。
我使用了这个和这个的混合物来改变文本部分的颜色。