Кто-нибудь знает хороший бесплатный html-редактор winforms для .NET. В идеале мне нужны режимы html и предварительного просмотра, а также возможность экспорта в PDF, Word Doc или что-то подобное.
Хотя экспорт я, наверное, мог бы создать сам из вывода html.
Еще одна приятная функция - это вставка из слова, которая удаляет все лишние теги, которые у вас обычно появляются, но опять же, хорошо, если не будет необходимого.





Вы можете использовать элемент управления Веб-браузер в режиме разработки со вторым элементом управления WebBrowser, установленным в режиме просмотра.
Чтобы перевести элемент управления WebBrowser в режим разработки, вы можете использовать следующий код.
Этот код представляет собой урезанную версию редактора WYSIWYG для одного из наших программных продуктов.
Просто создайте новую форму, поместите на нее элемент управления WebBrowser и поместите его в форму.
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
Я принял это как основную идею, спасибо, я работаю над расширением функциональности с помощью панели инструментов для шрифтов, полужирного, курсива ...
Спасибо за комментарии, это отличная реализация, единственный недостаток - это процедуры очистки кода, необходимые для получения хорошего xhtml.
И еще один недостаток - конечно, на компьютере должен быть установлен IE. Было бы неплохо увидеть ресурс, для которого не требуется IE.
Re: и другой недостаток, конечно, вам нужен IE, установленный на компьютере. Я включил этот подход в приложение Click Once WinForm, и мне также нужно было включить файл COM Interop размером 10 МБ, чтобы .NET могла взаимодействовать с IE.
Не забудьте отключить параметр явным образом при запуске приведенного выше кода.
Я не могу сказать, что у меня когда-либо возникала проблема с включением файла взаимодействия COM.
"WebBrowser1.ActiveXInstance.Document.DesignMode", как это следует переписать на C#?
при использовании .Net 4.0 сделайте ActiveXInstance динамическим.
.ActiveXInstance.GetType().GetProperty("designMode").SetValue(txtHtml.ActiveXInstance, "On", null); на C#см. 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, и необходимость передать цвета формы / управления по умолчанию в редактор HTML, чтобы он выглядел писать, а затем пользователи меняли цветовые схемы в Windows.
Поэтому, если мне нужно сделать это снова, я бы использовал сторонний редактор HTML (бесплатный или платный).
Я подумываю использовать Writer от Lutz Roeder (известного Reflector). Базовый редактор Html, полностью написанный на C#, предоставляется как есть с исходным кодом. Ищите это на http://www.lutzroeder.com/dotnet/
//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;
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

Если вам просто нужно отформатировать какой-то текст, вы можете найти множество проектов с открытым исходным кодом на codeproject.com.
Я думаю, что функциональность Netrix является наиболее полной из всех этих бесплатных элементов управления. Ссылка ниже: https://github.com/joergkrause/netrix
Конечно, есть некоторые платные коммерческие элементы управления, которые обычно обеспечивают более удобный интерфейс и более богатые функции, такие как этот BaiqiSoft.HtmlEditor. Это позволяет мне объединять / разъединять ячейки, настраивать высоту строки и ширину столбца для вставляемой таблицы.
удивительный! такие ответы - вот что такое ТАК!