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

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


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.


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.

CodeMirror is a JavaScript library that can be used to create a relatively pleasant editor interface for code-like content ― computer programs, HTML markup, and similar. If a parser has been written for the language you are editing (see below for a list of supported languages), the code will be coloured, and the editor will help you with indentation.

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


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