2009-11-08 90 views

回答

1

您正在使用的WinForms或WPF?

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

1

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

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

0

不完全是你的问题的答案,但你看看SharpDevelop文本编辑器组件?它非常轻巧(< 200kB IIRC),可以很容易地嵌入到WinForms应用程序中,并为内置的多种语言提供语法高亮显示。

否则,您可能要查看this CodeProject page。它会在输入时重新格式化RTF,对于大型文件来说这不是很有效,它包含一些令人毛骨悚然的块,所以我不确定我是否会将它用于生活关键型应用程序中,但它绝对是一个好起点指出如何做到这一点。

0

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

+2

语法突出显示,对于设计为在渲染之前回叫或迭代接收文本的文本渲染器,实际上非常简单:它只是一种词法分析,根据其标记类型对文本进行分类。但RTF和其他丰富的编辑器不是这样设计的,模型数据与其表示之间是分开的。 – 2009-11-08 19:31:58

+0

是的,似乎RTF现在看起来挺旧...... :-) – jdehaan 2009-11-08 22:20:31

4

Scintilla控制是一个很好的源代码编辑器,其中包括一系列其他功能中的语法突出显示。您可以将其嵌入到自己的应用程序中,并且有一个.NET wrapper可用。

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

+0

如何安装.dll? – 2009-11-12 01:56:13

+0

如果您从http://scintillanet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34393下载.NET Wrapper,那么您可以将文件ScintillaNet.dll添加到项目的“参考”(如果您是使用Visual Studio)。 – 2009-11-12 09:29:28

+0

需要将其中一个dll部署到windows \ system32,这是一个很大的缺点 – 2010-01-19 22:18:25