Элемент управления WYSIWYG Markdown для Windows Forms?

[У нас есть интерфейсное приложение для базы данных Windows Forms, которое, помимо прочего, может использоваться как CMS; клиенты создают структуру, заполняют ее, а затем используют сайт на основе ASP.NET WebForms для публичного представления результатов в Интернете. Для дополнительной гибкости им иногда приходится вводить фактическую разметку HTML прямо в текстовое поле, которое затем превращается в varchar в базе данных. Это работает, но отнюдь не удобно.]

Таким образом ... некоторым клиентам нужен редактор WYSIWYG для HTML. Я хотел бы убедить их, что им было бы полезно использовать более простой язык (а именно Markdown). В идеале я бы хотел иметь для этого WYSIWYG-редактор. Им не нужны таблицы или что-то подобное.

Беглый поиск обнаруживает конвертер .NET Markdown в HTML, а затем у нас есть текстовый редактор на основе Windows Forms, выводящий HTML, но, по-видимому, ничего, что объединяет их. В результате у нас все еще будут наши varchars с разметкой, но, по крайней мере, они будут достаточно удобочитаемыми и легко анализируемыми.

Будет ли это - WYSIWYG-редактор, который выводит Markdown, который затем анализируется в HTML в ASP.NET - возможно? Есть альтернативные предложения?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
11
0
5 835
5

Ответы 5

Разве вы не можете просто использовать тот же элемент управления, который использует я Stack Overflow (который мы все набираем) --- WMD, и просто сохранить Markdown в VARCHAR. Затем используйте конвертер .NET Markdown в HTML, как вы упомянули, для отображения HTML по мере необходимости. Джефф рассказывает об этом более подробно в подкасте StackOverflow (не знаю номера серии).

ОП явно указал ФОРМЫ WINDOWS.

nathanchere 17.09.2012 11:54

@Soeren,

Вы определенно можете встроить IE с редактором Javascript Markdown в приложение Windows Forms.

the RichTextBox control

Итак, вы хотите использовать Markdown, но хотите, чтобы пользователь об этом не знал? Возможно, это недостижимая цель. Я думаю, что смысл Markdown в том, что он ориентирован на писателей, которые хотят немного изучить довольно естественный синтаксис и редактировать все в виде обычного текста (например, Википедия? Существуют ли чистые редакторы WYSIWYG для этого? Вероятно ... и, возможно, некоторые другой редактор Википедии должен прийти и очистить полученную разметку и форматирование ...). Если вы хотите, чтобы он был прозрачным для пользователя (например, MS Word), Markdown может быть не тем, что вы хотите, или не дать вам преимуществ, которые он рекламирует в этой ситуации.

The input happens in Windows Forms

Ой! Теперь я лучше понимаю ваш вопрос. Я думаю, это зависит от того, как выглядит ваше приложение Windows Forms, будет ли встроенный элемент управления IE торчать, как больной палец. Если вы попробуете, то обнаружите, что сможете заставить его работать. [1]

На вашем месте я бы попробовал что-то вроде этого [2]:

Если вы не думаете, что такая организация понравится вашим пользователям (особенно при редактировании в текстовом окне), то опять же я не думаю, что Markdown - это ответ для вашего конкретного приложения. Если вы думаете, что вашим пользователям нравится редактировать чистый текст, я уверен, что мы сможем найти решение. Просьба уточнить?

Джаред.

[1] Мне удалось отбросить элемент управления IE HTML в проект строго для отображения некоторых сгенерированных результатов в виде PDF (с использованием плагина IE Reader, такого как Adobe Reader или Foxit). Пользователь понятия не имеет, что эта часть графического интерфейса является элементом управления IE, он просто показывает PDF-файл, позволяет распечатывать и сохранять и т. д.

[2] ... но удалите границы и сделайте так, чтобы два разделенных элемента управления касались всех четырех краев встроенного элемента управления IE или подходили очень близко ... сделайте это, например, светло-серым или белым, и удалите все границы IE control, чтобы он сливался с окружающими элементами управления. Может быть, поместите это на отдельную вкладку, и я призываю нетехнического пользователя сказать / позаботиться о том, является ли это элементом управления HTML или собственным.

Я могу полностью ошибаться во всем этом (нужно было бы увидеть это в действии, чтобы определить, будет ли это работать), но это может быть проще, чем написать собственный интерактивный редактор Markdown ...

... на самом деле, чтобы реализовать свой собственный редактор C# Markdown, вы можете просто поместить текстовое поле редактирования рядом со встроенным элементом управления IE и запустить текущий Markdown через конвертер .NET Markdown-> HTML в отдельном потоке и заменить HTML в элемент управления IE (при условии, что конвертер Markdown-> HTML очень либерален и устойчив к выбросу ЛЮБЫХ исключений).

«WYSIWYG Markdown» на самом деле оксюморон, поскольку весь смысл Markdown заключается в том, чтобы позволить вам писать синтаксис разметки естественным и интуитивно понятным образом, который затем обрабатывается в HTML, пока не, вы имеете в виду, фактически беря, например, ** текст ** и отображая его как **текст* * например. На самом деле это было бы круто, но с такими вещами, как нумерованные и маркированные списки, было бы очень сложно, так как вам придется делать все позиционирование, но при этом все должно основываться на реальных текстовых символах (например, '*' вместо символа маркера ) и поддерживают правильное позиционирование текстового ввода, обратное пространство и т. д.

  • Например,
  • в этом списке маркеров,
  • пули на самом деле должны быть звездочками,
  • и промежутка действительно не было бы.

На это, безусловно, стоит обратить внимание, если кто-то с этим справится.

Я думаю, что лучший подход для этого - объединить

  1. Преобразование Markdown в HTML &
  2. Отображение HTML в WinForms

Самой последней версией библиотеки Markdown является Markdig, которую вы можете установить через nuget.

Nuget > Markdig

Простая реализация может заключаться в следующем:

  1. Добавьте SplitContainer к контроллеру Form, установите Dock = Fill
  2. Добавьте TextBox, установите Dock = Fill и установите Multiline = True
  3. Добавьте WebBrowser, установите Dock = Fill

Затем обработайте событие TextChanged, проанализируйте текст в html и установите DocumentText следующим образом:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var md = textBox1.Text;
    var html = Markdig.Markdown.ToHtml(md);
    webBrowser1.DocumentText = html;
}

Вот записанная демонстрация:

Demo screen share

WebBrowser не работает в Mono.

Paul 09.01.2021 07:06

Другие вопросы по теме