Текстовое поле с подсветкой синтаксиса для Winforms, ASP.NET, WPF - PullRequest
12 голосов
/ 16 февраля 2009

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

Я обнаружил отличный, БЕСПЛАТНЫЙ ActiPro SyntaxHighlighter для ASP.NET , но, к сожалению, это ТОЛЬКО для ASP.NET, и он отображает только текст с выделенным синтаксисом способом, он не имеет возможности редактирования .... .

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

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

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

Ответы [ 3 ]

6 голосов
/ 03 апреля 2009

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

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

3 голосов
/ 28 ноября 2010

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

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

Парсеры для:

  • JavaScript
  • XML / HTML
  • CSS
  • смешанный режим HTML
  • SPARQL
  • HTML + PHP смешанный режим
  • Python
  • Луа
  • рубин
  • SQL
  • PLSQL
  • diff
  • 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>

Руководство CodeMirror помогает .

Также рассмотрите запись WikiPedia для сравнения редакторов исходного кода на основе JavaScript

2 голосов
/ 18 февраля 2009

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

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

...