我正在寻找一个语法高亮的Textbox组件,最好是免费的,带有源代码,并且能够在Winforms,ASP.NET和WPF中使用。此外,它不仅应支持显示,还应支持编辑内容。
我发现了优秀的免费ActiPro SyntaxHighlighter for ASP.NET,但不幸的是,它只适用于ASP.NET,它只以语法突出显示方式显示文本,它没有编辑功能......
我也知道ICSharp Text Editor
组成的{{1}}组件,但那是一个独立的,但仅限Winforms的解决方案。
有没有人知道有一个核心来处理语法突出显示的组件(可配置,所以我可以将它用于C#代码,XML和HTML文件等),并且它有三个用于Winforms的“皮肤”, ASP.NET和WPF?我真的更喜欢拥有 ONE 核心来完成繁重的工作,并且顶部的三个UI共享核心代码....
欢迎任何指示和提示!
答案 0 :(得分:6)
我和你在一起marc:我很想看到一个可扩展的语法突出框架,它可以生成一个标记化的“文档”对象,然后可以通过每个显示框架的控件显示它。这样解析器/标记器就可以写一次了!
我能说的最好的是this thread表明ActiProSoftware正在为其语法高亮显示器开发WPF控件。
答案 1 :(得分:3)
也许考虑网络的CodeMirror项。显然,这不适用于你所要求的WPF,但它适用于任何Web框架--Webforms,ASP.NET MVC,纯HTML,PHP等。
CodeMirror是一个JavaScript库,可用于为类似代码的内容创建一个相对令人愉快的编辑器界面 - 计算机程序,HTML标记等。如果已经为您正在编辑的语言编写了解析器(请参阅下面的支持语言列表),代码将被着色,编辑器将帮助您缩进。
解析器:
实现:
<textarea rows="30" cols="120" id="someCode" >
//some comments
var foo = "bar";
</textarea>
你包含2个.js引用,然后这个JavaScript用新的语法突出显示元素替换你的textarea元素。
<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>
还要考虑WikiPedia entry for Comparison of JavaScript-based source code editors
答案 2 :(得分:2)
所有这些平台都完全不同,每个平台都有自己的渲染显示方法。因此,没有任何通用控制可以完成所有工作。每个平台都有一个单独的控件
但是,可以实现Web控件并在页面中使用它。然后winforms或wpf中的浏览器对象可以使用页面地址来显示它