2009-02-16 4 views
12

Я ищу компонент выделения текстового поля, предпочтительно свободный, с исходным кодом и способный использоваться как в Winforms, ASP.NET, так и в WPF. Кроме того, он должен поддерживать не только отображение, но и редактирование содержимого.Текстовое поле с подсветкой синтаксиса для Winforms, ASP.NET, WPF

Я обнаружил отличный, бесплатный ActiPro SyntaxHighlighter for ASP.NET, но это, к сожалению, только для ASP.NET и отображает только текст в синтаксисе выделены образом, он не имеет возможности редактирования .....

Я также знаю, из ICSharp Text Editor компонент, который является частью SharpDevelop, но это тогда автономный, но только Winforms, решение.

Кто-нибудь знает о компоненте, который имеет ядро ​​для обработки подсветки синтаксиса (настраивается, поэтому я могу использовать его для кода C#, XML и HTML-файлов и т. Д.) И имеет три «скина» для Winforms , ASP.NET и WPF? Я бы предпочел иметь ОДИН Ядро, которое делает тяжелую работу, и три пользовательских интерфейса, которые используют общий код ...

Любые указатели и подсказки приветствуются!

ответ

6

Я с тобой marc: Мне бы хотелось увидеть расширяемую структуру выделения синтаксиса, которая могла бы генерировать токенированный объект «document», который затем мог бы отображаться через элементы управления для каждой структуры отображения. Таким образом, синтаксический анализатор/токенизатор можно было бы написать один раз!

Лучшее, что я могу сказать, это то, что this thread предполагает, что ActiProSoftware работает над элементом управления WPF для подсветки синтаксиса.

2

Все эти платформы совершенно разные, и каждый из них имеет собственные методы отображения рендеринга. Таким образом, не будет никакого универсального контроля, который бы делал все. Каждая платформа будет иметь отдельный элемент управления

Однако можно реализовать веб-элемент управления и использовать его на странице. Тогда объект браузера в winforms или wpf может использовать адрес страницы, чтобы отобразить его

+4

О, я полностью понимаю * рендеринг * часть не может быть одинаковой для всех - но все других вещей, как правила, какие части, чтобы выделить с каким цветом, и обнаружения ключевые слова и т. д., все могут быть разделены ..... –

3

Возможно, рассмотрите CodeMirror элементов для сети. Очевидно, что это не будет работать для WPF, как вы просили, но он будет работать для любой веб-инфраструктуры - Webforms, ASP.NET MVC, простого HTML, PHP и других.

CodeMirror - это библиотека JavaScript, которая может использоваться для создания относительно приятного интерфейса редактора для кодового контента - компьютерных программ, разметки HTML и тому подобного. Если парсер был написан для языка, который вы редактируете (см. Ниже список поддерживаемых языков), код будет окрашен, и редактор поможет вам с отступом.

Парсеры для:

  • JavaScript
  • XML/HTML
  • CSS
  • HTML смешанного режима
  • SPARQL
  • HTML + PHP в смешанном режиме
  • Python
  • Lua
  • Рубин
  • SQL
  • PLSQL
  • дифференциалов
  • Groovy
  • C#
  • Схема
  • Java
  • XQuery
  • OmetaJS
  • Freemarker

Реализация:

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

The CodeMirror manual helps.

рассмотреть также WikiPedia entry for Comparison of JavaScript-based source code editors