Winforms HTML-редактор
Любой знает хороший бесплатный HTML-редактор winforms для.NET. В идеале я хотел бы, чтобы html и режимы предварительного просмотра наряду с возможностью экспорта в PDF, Word DOC или подобное.
Хотя экспорт я, вероятно, мог бы создать сам из вывода html.
Еще одна полезная функция - вставка из слова, которая удаляет все лишние теги, с которыми вы обычно сталкиваетесь, но, опять же, это хорошо, когда не требуется.
5 ответов
Вы можете использовать элемент управления WebBrowser в режиме конструктора со вторым WebBrowser
управление установлено в режиме просмотра.
Для того, чтобы поставить WebBrowser
Управление в режиме дизайна, вы можете использовать следующий код.
Этот код является супер урезанной версией WYSIWYG-редактора для одного из наших программных продуктов.
Просто создайте новую форму, напишите WebBrowser
управляйте этим и поместите это в Form.Load:
Me.WebBrowser1.Navigate("")
Application.DoEvents()
Me.WebBrowser1.Document.OpenNew(False).Write("<html><body><div id=""editable"">Edit this text</div></body></html>")
'turns off document body editing
For Each el As HtmlElement In Me.WebBrowser1.Document.All
el.SetAttribute("unselectable", "on")
el.SetAttribute("contenteditable", "false")
Next
'turns on editable div editing
With Me.WebBrowser1.Document.Body.All("editable")
.SetAttribute("width", Me.Width & "px")
.SetAttribute("height", "100%")
.SetAttribute("contenteditable", "true")
End With
'turns on edit mode
Me.WebBrowser1.ActiveXInstance.Document.DesignMode = "On"
'stops right click->Browse View
Me.WebBrowser1.IsWebBrowserContextMenuEnabled = False
//CODE in C#
webBrowser1.Navigate("about:blank");
Application.DoEvents();
webBrowser1.Document.OpenNew(false).Write("<html><body><div id=\"editable\">Edit this text</div></body></html>");
foreach (HtmlElement el in webBrowser1.Document.All)
{
el.SetAttribute("unselectable", "on");
el.SetAttribute("contenteditable", "false");
}
webBrowser1.Document.Body.SetAttribute("width", this.Width.ToString() + "px");
webBrowser1.Document.Body.SetAttribute("height", "100%");
webBrowser1.Document.Body.SetAttribute("contenteditable", "true");
webBrowser1.Document.DomDocument.GetType().GetProperty("designMode").SetValue(webBrowser1.Document.DomDocument, "On", null);
webBrowser1.IsWebBrowserContextMenuEnabled = false;
Я подумываю об использовании Writer от Lutz Roeder (знаменитой Reflector). Базовый редактор HTML, полностью написанный на C#, поставляется с исходным кодом как есть. Ищите это в http://www.lutzroeder.com/dotnet/
SpiceLogic .NET WinForms HTML Editor Control, не бесплатный, но охватывает все, что вы ищете. В частности, функция вставки из MS Word действительно эффективна. Нажав на эту кнопку MS Word Paste, вы вставите содержимое из буфера обмена в редактор, очистите специальные теги MS Word и сгенерируйте чистый XHTML. Если MS Word содержит несколько изображений, этот редактор также обнаружит эти изображения, и выходной XHTML будет содержать тег изображения с правильными путями для этих изображений.
https://www.spicelogic.com/Products/NET-WinForms-HTML-Editor-Control-8
См. http://www.maconstateit.net/tutorials/JSDHTML/JSDHTML12/jsdhtml12-02.htm для примера редактора HTML, который использует редактирование surport в IE.
http://www.mozilla.org/editor/midasdemo/ и http://starkravingfinkle.org/blog/wp-content/uploads/2007/07/contenteditable.htm также работает в IE и дает примеры того, как сделать панель инструментов, для шрифтов, жирный, курсив и т. д.
Посмотрите эти вопросы для моего опыта, когда я попытался сделать что-то вроде этого.
У меня также было много других проблем, в том числе необходимость написать логику изменения размера в jscript, чтобы получить размер HTML-редактора вместе с формой WinForm, и необходимость передавать цвета формы / coontrol по умолчанию в HTML-редактор, чтобы он выглядел как пишущий, а затем изменялись пользователи. цветовые схемы на винде.
Поэтому, если мне нужно будет сделать это снова, я бы использовал сторонний редактор HTML (бесплатный или платный)
Если вам просто нужно отформатировать какой-то текст, вы можете найти множество проектов с открытым исходным кодом на https://www.codeproject.com/.
Я думаю, что функциональность Netrix является наиболее полной из всех этих бесплатных элементов управления. Ссылка ниже: https://github.com/joergkrause/netrix
Конечно, есть некоторые платные коммерческие элементы управления, которые обычно обеспечивают более удобный интерфейс и расширенные функции, например этот BaiqiSoft.HtmlEditor. Это позволяет мне объединять / отключать ячейки, регулировать высоту строки и ширину столбца для вставляемой таблицы.