VBNet.Su - Visual Basic .NET. ASP .NET. Framework .NET.
Список форумов
Windows Forms

Визуальный HTML-редактор

Быстрый переход:
Визуальный HTML-редактор19 декабря 2008 / 09:09
Алексей Немиро
Администратор
ку 65.2275660625+

вопросов: 8
советов: 13
ответов: 27
комментариев: 80


Небольшой совет на тему, как сделать визуальный HTML-редактор (WYSIWYG) в Windows Forms.
На самом деле все довольно просто, даже программистом быть не обязательно, чтобы сделать такой редактор.

Итак, порядок действий:

0. Создаем новый проект (Windows Forms Application).

1. Размещаем на форме компонент WebBrowser, и три кнопки: Button1, Button2, Button3.

2. Жмем меню Project (Проект) -> Add Reference... (Добавить ссылку...). В появившемся окне ищем и выбираем Microsoft.mshtml, нажимаем Ok.

3. Вставляем код:
  1. '(c) vbnet.su
  2. Public _Doc As mshtml.IHTMLDocument2
  3.  
  4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  5.   WebBrowser1.DocumentText = "<html><style type=""text/css"">p{padding:0;margin:0;}</style><body style=""padding:0;margin:8px;""></body></html>" 'шаблон
  6.   _Doc = CType(WebBrowser1.Document.DomDocument, mshtml.IHTMLDocument2)
  7.   _Doc.designMode = "On"
  8.   Button1.Text = "Жирный"
  9.   Button2.Text = "Курсив"
  10.   Button2.Text = "Подчеркнутый"
  11. End Sub
  12.  
  13. 'жирный
  14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  15.   _Doc.execCommand("Bold", False, Nothing)
  16. End Sub
  17.  
  18. 'курсив
  19. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  20.   _Doc.execCommand("Italic", False, Nothing)
  21. End Sub
  22.  
  23. 'подчеркнутый
  24. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  25.   _Doc.execCommand("Underline", False, Nothing)
  26. End Sub


Собственно все. Запускаем, и любуемся результатом.

Изменить фот или заливку выделенного текста можно, например, так:
  1. 'цвет шрифта выделенного текста
  2. If ColorDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
  3.   Dim txt As mshtml.IHTMLTxtRange = _Doc.selection.createRange()
  4.   txt.pasteHTML("<span style=""color:" & ColorTranslator.ToHtml(ColorDialog1.Color) & ";"">" & txt.htmlText & "</span>")
  5. End If
  6.  
  7. 'фон выделенного текста
  8. If ColorDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
  9.   Dim txt As mshtml.IHTMLTxtRange = _Doc.selection.createRange()
  10.   txt.pasteHTML("<span style=""background-color:" & ColorTranslator.ToHtml(ColorDialog1.Color) & ";"">" & txt.htmlText & "</span>")
  11. End If


Выравнивание текста:
  1. _Doc.execCommand("JustifyLeft", False, Nothing)
  2. _Doc.execCommand("JustifyCenter", False, Nothing)
  3. _Doc.execCommand("JustifyRight", False, Nothing)
  4. _Doc.execCommand("JustifyFull", False, Nothing)


Размер библиотеки Microsoft.mshtml.dll семь с половиной мегабайт. Поставляется вместе с Visual Studio, а также она (dll-ка) должна входить в состав Microsoft Office.
Все сказанное админом – истина и обсуждению не подлежит, даже если истина таковой не является.
Кнопки VBNet.Su  ·  Утилиты  ·  Home Page  ·  Kbyte.Ru
--
Не забываем ставить фастаны (быстрые ответы) ;-)

..и было сказано:
Спасибо: Leon
Это отдельная страница сообщения форума. Чтобы посмотреть всю ветку, нажмите на эту ссылку.