Подтвердить что ты не робот

Текстовое поле для выделения синтаксиса для Winforms, ASP.NET, WPF

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Парсеров для:

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

Ответ 3

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

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