WPF RichTextBox用行号创建编辑器

时间:2009-02-19 22:00:26

标签: wpf richtextbox line-numbers

我正在为特定于域的语言创建文本编辑器。我正在使用WPF RichTextBox作为基本控件。我不知道如何优雅地包括行号。有谁知道任何例子?

4 个答案:

答案 0 :(得分:7)

AvalonEdit是一个很好的,它是开源的。我认为它几乎具有Aqistar控件的所有功能,例如语法高亮和折叠。易于配置和使用。进一步的细节可以找到hereenter image description here

答案 1 :(得分:3)

我会创建一个复合控件,左边是堆栈面板控件和文本块,用于处理行号。如果您关注行数并且视觉元素太多,那么您可以在虚拟模式下使用ListBox。

您必须连接到RichTextBox上的各种事件,以便您知道何时更新ListBox,以及计算每行的高度,但这应该与附加到RichTextBox的FlowDocument相关。 / p>

答案 2 :(得分:3)

RichText支持“受保护” - 不可编辑 - 跨度。您可以将行号转储为受保护的文本跨度作为RTF流的一部分(当您进行格式化时)。

在Win Forms中,您可以使用RichTextBox.SelectionProtected Property。 WPF必须有类似的东西。

这样,您的所有基线都是正确的,您无需进行任何额外的思考/编程即可让编辑器正常运行。可编辑的文本将是可编辑的,行号不会。

唯一的缺点是每次编辑后都必须重新提交RTF流。但我想你已经这样做了提供解析格式化/错误诊断/无论如何。

答案 3 :(得分:2)

如何使用AqiStar的富文本WPF控件? AqiStar.TextBox

我不为他们工作......我只知道Oren在他的NHibernate Profiler(NHProf)中使用这个产品,他似乎在挖掘它。