2008-08-12 4 views
20

Мы ищем элемент управления редактором WYSIWYG для нашего приложения Windows (vb.net или C#), чтобы пользователи могли создавать HTML-письма (отправлять по SMTP-объектам в сетке dot net) перед отправкой.Редактор электронной почты HTML в приложении Windows Forms

В настоящее время все имеющиеся редакторы можно найти у одного из следующих вопросов:

а) Они полагаются на mshtml.dll или управления веб-браузера, который как доказанный для нас быть ненадежными как HTML кодом и редактор рассинхронизироваться под Windows 2000 (IE6)

б) Они веб-основы не окно формы управления

с) Они помещают стили в заголовке документа (смотрите примечание ниже).

К сожалению, поскольку этот HTML email article описывает единственный верный способ заставить HTML-письма работать со стилями, это использовать их встроенные, которые теперь, по-видимому, не поддерживаются во многих редакторах.

Есть ли у кого-нибудь опыт в этом или может предложить решение?

ответ

2

Мне также нужен редактор WYSIWYG для проекта Windows Forms, над которым я работал. Я написал об элементах, которые я нашел here. В конце концов, я закончил тем, что нашел в CodeProject: A Windows Forms based text editor with HTML output. Это нарушает (а) выше, поскольку он использует элемент управления WebBrowser. Тем не менее, я не мог найти ничего хорошего, что не делал этого (если вы не используете WebBrowser в некотором роде, тогда вам в основном нужно поправить свой собственный синтаксический анализатор и рендеринг HTML, чтобы обрабатывать «What-You- См. «Часть WYSIWYG». Хорошая вещь об этом управлении заключается в том, что источник легко настраивается, поэтому вы можете отбирать и добавлять параметры форматирования по своему усмотрению (и если вы хотите, чтобы все стили были в очереди, вы также можете это сделать).

3

Я использовал this one, который немного ниже, чем у WebBrowser, но по-прежнему использует MSHTML, который выплевывает некоторые уродливые HTML. Для моих целей я делаю редактор с несколькими вкладками с режимом редактирования WYSIWYG и HTML (с использованием ICSharp.TextEditor) с классом Buffer для обновления при каждом изменении вкладок. Как часть этого класса Buffer, я на самом деле run the HTML through HTML Tidy и несколько бит scrub-n-replace, чтобы получить действительный XHTML.

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

0

Исходный код nikhil обеспечивает достойное решение. Я когда-то загрузил этот маленький компонент, я думаю, что он использует MSHTML. Но я не уверен в этом. Источник может быть загружен here. Дайте мне знать, если это поможет :)

1

Вместо поиска HTML-редактора рассмотрите вариант редактора RichText (который может быть намного проще создать), а затем преобразовать окончательный текст в документ HTML.

При условии, что вы должны использовать минимальный набор функций (полужирный/курсив и т. Д.), Не должно быть сложно создать редактор RT и преобразование окончательного документа в формат HTML.

Если, с другой стороны, вам нужно использовать больше функций (например, таблиц), вам необходимо изучить Rich Text Format и реализовать необходимые функции.

Дополнительные ресурсы:

+0

Это то, что мы в конечном итоге делает, преобразование с использованием Aspose слов. – John 2011-01-12 09:34:16

2

Там находится это HTML Edit Control for .NET (раскрытие: я написал).

Он не полагается ни на какой веб-браузер; это элемент управления Windows; и он может справиться с атрибутом style=.

Это не совсем то, что вы хотите: поскольку он предназначен для WYSIWYM, на панели инструментов нет кнопок для редактирования встроенных стилей (хотя его механизм рендеринга отображает встроенные стили), панель инструментов позволяет вам указывать только элементы уровня блока, такие как <p> и <h1> и <ul> и <table>; но если бы вы захотели, вы могли бы спросить меня о добавлении функциональности (как описано в разделе Developing New Functionality).

+0

Или вместо того, чтобы требовать от меня внедрения новых функций, вы не могли отображать мою встроенную панель инструментов и реализовывать/отображать свои собственные: используйте свою новую панель инструментов и мой существующий API для редактирования документа и существующий элемент управления HTML для рендеринга/отображения отредактированный документ в режиме реального времени. – ChrisW 2010-09-08 23:28:02

2

Вы можете попробовать .NET Win HTML Editor Control из SpiceLogic,

https://www.spicelogic.com/Products/NET-Win-HTML-Editor-Control-8

Их компонент может вставлять все локальные изображения и вернуть .NET объект MailMessage, который очень удобен для разработки почтового клиента.

0

Это мой первый вклад.

Вы можете использовать RichTextBox. Формат RTF более чем достаточно для создания электронной почты.

Недавно я писал о том, как загружать и сохранять на жесткий диск содержимое RichTextBox.

Позволяет копировать и вставлять. Он прост в использовании и с несколькими кнопками вы можете создавать свои собственные команды.

With RichTextBox1 
    .SelStart = 0 
    .SelLength = Len (. Text) 
    .SelColor = vbRed 
End With 

Пример погрузки и экономии.

http://danielcatala.wordpress.com/2014/01/30/como-cargar-y-guardar-archivos-richtext-con-wpf/

Private Sub btnCarga(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click 

    Dim archivoCarga As New StreamReader("prueba.rtf") 
    With RichTextBox1 
     .Selection.Select(.Document.ContentStart, RichTextBox1.Document.ContentEnd) 
     .Selection.Load(archivoCarga.BaseStream, System.Windows.DataFormats.Rtf) 
    End With 
End Sub 

Private Sub btnGuarda(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click 

    Dim archivoSalida As New StreamWriter("prueba.rtf") 
    Dim bs As Stream = archivoSalida.BaseStream 

    With RichTextBox1 
     .Selection.Select(RichTextBox1.Document.ContentStart,  RichTextBox1.Document.ContentEnd) 
     .Selection.Save(bs, System.Windows.DataFormats.Rtf) 
    End With 
End Sub