Winforms、ASP.NET和WPF的语法高亮文本框

12

我正在寻找一个语法高亮的文本框组件,最好是免费的并且有源代码,并且能够在Winforms、ASP.NET和WPF中使用。此外,它不仅应该支持显示,还应该支持编辑内容。

我发现了非常出色、免费的ActiPro SyntaxHighlighter for ASP.NET,但它只适用于ASP.NET,且只以语法高亮的方式显示文本,没有编辑功能...

我还知道ICSharp Text Editor组件是SharpDevelop的一部分,但那只是一个独立的、仅适用于Winforms的解决方案。

是否有人知道一个组件,它有处理语法高亮的核心(可配置,以便我可以将其用于C#代码、XML和HTML文件等),并且有三个“皮肤”适用于Winforms、ASP.NET和WPF?我真的很希望有一个核心来完成重活,然后三个UI共享该核心代码....

欢迎提供任何指针和提示!

3个回答

7
我支持你的想法,马克:我希望看到一个可扩展的语法高亮框架,它可以生成一个分词的“文档”对象,然后通过每个显示框架的控件进行显示。这样,解析器/分词器只需要编写一次!
最好的说法是这个线程表明ActiProSoftware正在为他们的语法高亮器开发一个WPF控件。

4
也许考虑为Web使用CodeMirror项目。显然,这对于您所要求的WPF不起作用,但它适用于任何Web框架-Webforms、ASP.NET MVC、纯HTML、PHP和其他。
CodeMirror是一个JavaScript库,可用于创建相对愉悦的代码编辑器界面-计算机程序、HTML标记和类似内容。如果已为您正在编辑的语言编写了解析器(有关支持的语言列表,请参见下文),则代码将被着色,并且编辑器将帮助您进行缩进。
以下是解析器:
JavaScript XML/HTML CSS HTML混合模式 SPARQL HTML+PHP混合模式 Python Lua Ruby SQL PLSQL diff Groovy C# Scheme Java XQuery OmetaJS Freemarker 实现:
<textarea  rows="30" cols="120" id="someCode" >
    //some comments
    var foo = "bar";
</textarea>

你引用了2个.js文件,然后这段JavaScript代码将你的文本框元素替换为新的语法高亮元素。

<script type="text/javascript">
    var textarea = document.getElementById('someCode');
    var editor = new MirrorFrame(CodeMirror.replace(textarea), {
        height: "350px",
        content: textarea.value,
        parserfile: ["tokenizejavascript.js", "parsejavascript.js"],
        stylesheet: "css/jscolors.css",
        path: "js/",
        autoMatchParens: true
    });
</script>

CodeMirror手册可以帮助你。

同时,考虑一下基于JavaScript的源代码编辑器比较的维基百科条目


2
所有这些平台都完全不同,每个平台都有自己的渲染显示方法。因此,不会有一个通用控件可以做到所有的事情。每个平台都需要单独的控件。
但是,可以实现一个Web控件并在页面中使用它。然后,winforms或wpf中的浏览器对象可以使用页面地址来显示它。

4
我完全理解“渲染”部分不能对所有内容都相同,但其他方面例如规则、使用何种颜色突出哪些部分以及检测关键词等等,都是可以共享的。 - marc_s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接