[У нас есть интерфейсное приложение для базы данных Windows Forms, которое, помимо прочего, может использоваться как CMS; клиенты создают структуру, заполняют ее, а затем используют сайт на основе ASP.NET WebForms для публичного представления результатов в Интернете. Для дополнительной гибкости им иногда приходится вводить фактическую разметку HTML прямо в текстовое поле, которое затем превращается в varchar в базе данных. Это работает, но отнюдь не удобно.]
Таким образом ... некоторым клиентам нужен редактор WYSIWYG для HTML. Я хотел бы убедить их, что им было бы полезно использовать более простой язык (а именно Markdown). В идеале я бы хотел иметь для этого WYSIWYG-редактор. Им не нужны таблицы или что-то подобное.
Беглый поиск обнаруживает конвертер .NET Markdown в HTML, а затем у нас есть текстовый редактор на основе Windows Forms, выводящий HTML, но, по-видимому, ничего, что объединяет их. В результате у нас все еще будут наши varchars с разметкой, но, по крайней мере, они будут достаточно удобочитаемыми и легко анализируемыми.
Будет ли это - WYSIWYG-редактор, который выводит Markdown, который затем анализируется в HTML в ASP.NET - возможно? Есть альтернативные предложения?






Разве вы не можете просто использовать тот же элемент управления, который использует я Stack Overflow (который мы все набираем) --- WMD, и просто сохранить Markdown в VARCHAR. Затем используйте конвертер .NET Markdown в HTML, как вы упомянули, для отображения HTML по мере необходимости. Джефф рассказывает об этом более подробно в подкасте StackOverflow (не знаю номера серии).
@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, пока не, вы имеете в виду, фактически беря, например, ** текст ** и отображая его как **текст* * например. На самом деле это было бы круто, но с такими вещами, как нумерованные и маркированные списки, было бы очень сложно, так как вам придется делать все позиционирование, но при этом все должно основываться на реальных текстовых символах (например, '*' вместо символа маркера ) и поддерживают правильное позиционирование текстового ввода, обратное пространство и т. д.
На это, безусловно, стоит обратить внимание, если кто-то с этим справится.
Я думаю, что лучший подход для этого - объединить
Самой последней версией библиотеки Markdown является Markdig, которую вы можете установить через nuget.
Простая реализация может заключаться в следующем:
SplitContainer к контроллеру Form, установите Dock = FillTextBox, установите Dock = Fill и установите Multiline = TrueWebBrowser, установите 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;
}
Вот записанная демонстрация:
WebBrowser не работает в Mono.
ОП явно указал ФОРМЫ WINDOWS.