如何在RichTextBox 中语法突出显示?

如何在用户类型使用String []关键字的richtextbox控件中突出显示语法。 我将很快发布一个轻量级的记事本到网上,我希望它有语法高亮。 我正在使用Windows表单。 有人可以发布代码示例吗?

  • RichTextBox语法高亮 (谈论RichTextBox本身 – 最小的function,但你在这里要求的确切)
  • 具有语法突出显示的文本框/ richtextbox? [C#] (主要谈论其他方式)

Scintilla控件是一个出色的源代码编辑器,包括一系列其他function中的语法突出显示。 您可以将它嵌入自己的应用程序中,并且可以使用.NET包装器 。

使用Scintilla,您可以指定关键字,然后在键入时应用语法突出显示。

您使用的是WinForms还是WPF?

如果是WPF,你可以看看AvalonEdit 。 它是免费和开源的,它在SharpDevelop(开源IDE)中使用。

您可以更改richtextbox中所选单词的字体。 看一下控件的Select和SelectedFont属性。

但实际上,您需要遍历单词,检查关键字中是否存在单词,然后使用上述属性更改字体。

不完全是你问题的答案,但你看过SharpDevelop的文本编辑器组件吗? 它非常轻量级(<200kB IIRC),可以轻松嵌入到WinForms应用程序中,并具有内置多种语言的语法高亮功能。

否则,您可能希望查看此CodeProject页面 。 它在您键入时重新格式化RTF,这对于大型文件来说效率不高,而且它包含一些令人毛骨悚然的catch (Exception) { }块,所以我不确定是否会在生命关键型应用程序中使用它,这绝对是一个很好的起点,看看它是如何完成的。

语法突出显示不是一项有效执行的简单任务。 您可以找到的许多解决方案(如涉及修改RTF的解决方案)都是一次性解决方案。 如果您想在编辑期间动态突出显示和取消突出显示单词,您的代码必须为此做好准备。 我不会重新发明轮子并使用ICSharp.TextEditor或类似解决您的问题。