Syntax-highlighting textbox for Winforms, ASP.NET, WPF

匿名 (未验证) 提交于 2019-12-03 03:04:01

问题:

I'm looking for a syntax-highlighting Textbox component, preferably free, with source, and capable of being used in Winforms, ASP.NET and WPF alike. Also, it should support not just display, but also editing contents.

I've discovered the excellent, FREE ActiPro SyntaxHighlighter for ASP.NET but that's unfortunately ONLY for ASP.NET and it only displays text in syntax highlighted manner, it has no editing capabilities.....

I also know of the ICSharp Text Editor component that's part of SharpDevelop but that's then a standalone, but Winforms only, solution.

Does anyone know of a component that has a core to handle the syntax-highlighting (configurable, so I can use it for C# code, XML and HTML files, and more), and that has three "skins" for Winforms, ASP.NET and WPF? I'd really prefer to have ONE core that does the heavy lifting, and three UIs on top sharing that core code....

Any pointers and hints are welcome!

回答1:

I'm with you marc: I'd love to see an extensible syntax highlighting framework that could generate a tokenized "document" object which could then be displayed via controls for each display framework. This way the parser/tokenizer could be written once!

The best I can say is that this thread suggests that ActiProSoftware is working on a WPF control for their syntax highlighter.



回答2:

Perhaps consider CodeMirror items for the web. Obviously this won't work for WPF as you'd asked, but it'll work for any web framework - Webforms, ASP.NET MVC, plain HTML, PHP and others.

Parsers for :

  • JavaScript
  • XML/HTML
  • CSS
  • HTML mixed-mode
  • SPARQL
  • HTML+PHP mixed-mode
  • Python
  • Lua
  • Ruby
  • SQL
  • PLSQL
  • diff
  • Groovy
  • C#
  • Scheme
  • Java
  • XQuery
  • OmetaJS
  • Freemarker

Implementation:

<textarea  rows="30" cols="120" id="someCode" >     //some comments     var foo = "bar"; </textarea> 

You include 2 .js references, and then this bit of JavaScript replaces your textarea elements with new syntax highlighted elements.

<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> 

The CodeMirror manual helps.

Also consider the WikiPedia entry for Comparison of JavaScript-based source code editors



回答3:

All those platforms are completely different and each have their own rendering display methods. So there won't be any universal control that does all. Each platform will have a separate control

However, one can implement a web control and use it in a page. Then a browser object in winforms or wpf can use the page address to display it



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!