Редактор winforms html

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

Хотя экспорт я, наверное, мог бы создать сам из вывода html.

Еще одна приятная функция - это вставка из слова, которая удаляет все лишние теги, которые у вас обычно появляются, но опять же, хорошо, если не будет необходимого.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
30
0
34 591
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Вы можете использовать элемент управления Веб-браузер в режиме разработки со вторым элементом управления 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

удивительный! такие ответы - вот что такое ТАК!

ine 18.10.2008 03:40

Я принял это как основную идею, спасибо, я работаю над расширением функциональности с помощью панели инструментов для шрифтов, полужирного, курсива ...

PeteT 18.10.2008 23:55

Спасибо за комментарии, это отличная реализация, единственный недостаток - это процедуры очистки кода, необходимые для получения хорошего xhtml.

Tom Anderson 22.10.2008 06:12

И еще один недостаток - конечно, на компьютере должен быть установлен IE. Было бы неплохо увидеть ресурс, для которого не требуется IE.

JohnC 31.10.2008 01:25

Re: и другой недостаток, конечно, вам нужен IE, установленный на компьютере. Я включил этот подход в приложение Click Once WinForm, и мне также нужно было включить файл COM Interop размером 10 МБ, чтобы .NET могла взаимодействовать с IE.

Chad 19.05.2009 07:38

Не забудьте отключить параметр явным образом при запуске приведенного выше кода.

Chad 19.05.2009 07:52

Я не могу сказать, что у меня когда-либо возникала проблема с включением файла взаимодействия COM.

Tom Anderson 20.05.2009 20:19

"WebBrowser1.ActiveXInstance.Document.DesignMode", как это следует переписать на C#?

okutane 20.05.2010 22:18

при использовании .Net 4.0 сделайте ActiveXInstance динамическим.

Tom Anderson 20.05.2010 23:18
.ActiveXInstance.GetType().GetProperty("designMode").SetValu‌​e(txtHtml.ActiveXIns‌​tance, "On", null); на C#
dtanders 20.08.2011 00:35

см. 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. Это позволяет мне объединять / разъединять ячейки, настраивать высоту строки и ширину столбца для вставляемой таблицы.

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