要为 Pascal 编写一个即兴 IDE,我正在寻找一个控件:
允许您以 10 ^ 6 个字符显示文本,并且滚动时不会减慢速度。
允许您更改任意范围字符的字体颜色和其他一些属性(背景颜色、粗体)。
在事件处理程序中有能力按下鼠标按钮和键盘键来确定这发生在哪个字符上。这是为了显示元素对应的上下文菜单代码。
到目前为止,我已经确定了 WPF 中的 RichTextBox,但不清楚如何处理第三点。
要为 Pascal 编写一个即兴 IDE,我正在寻找一个控件:
允许您以 10 ^ 6 个字符显示文本,并且滚动时不会减慢速度。
允许您更改任意范围字符的字体颜色和其他一些属性(背景颜色、粗体)。
在事件处理程序中有能力按下鼠标按钮和键盘键来确定这发生在哪个字符上。这是为了显示元素对应的上下文菜单代码。
到目前为止,我已经确定了 WPF 中的 RichTextBox,但不清楚如何处理第三点。
我推荐使用 AvalonEdit http://avalonedit.net/
Install-Package AvalonEdit -Version 5.0.4或者
dotnet add package AvalonEdit --version 5.0.4WPF:
PS 据我了解,这里没有对 Pascal 语法的内置支持。如果您对这个特定的解决方案感兴趣,您可以编写自己的:
https://github.com/icsharpcode/SharpDevelop/wiki/XSHD-Tags
然后你需要像这样连接:https ://stackoverflow.com/a/5057464/10502674
是的,Scintilla 是一个不错的选择。结果证明它是一个很好的代码编辑器。诚然,Pascal 的内置词法分析器很快就不再令人满意,不得不重写为它自己的,但同样,Scintilla 根据分析结果尽一切努力突出显示代码。谢谢@亚历山大彼得罗夫。