Лучший контроль для рендеринга HTML
У меня есть необходимость отрисовать некоторый HTML-текст (не HTML-страницу с <html>
а также <body>
теги и все, только некоторые <i>
и <hr />
s и прочее) в приложении C#.NET 4.0 Winforms. Предпочтительно это будет Panel
как контроль, который вы могли бы просто p.HTML = "somehtml"
и он будет отображать HTML. Кто-нибудь имел опыт работы с элементами управления рендерингом.NET HTML, который они могли бы порекомендовать? Я нашел это в codeproject, но там я немного опасаюсь.
2 ответа
Почему бы не использовать сборку в WebBrowser
контроль. Вы всегда можете заключить свой HTML-фрагмент в стандартный <html/>
разметки.
string html = "<i> some text </i>";
webbrowser1.DocumentText = string.Format("<html>{0}</html>", html);
Вы можете попробовать эту ссылку
Вы можете использовать элемент управления WebBrowser в режиме конструктора со вторым элементом управления WebBrowser, установленным в режиме просмотра.
Чтобы перевести элемент управления WebBrowser в режим разработки, вы можете использовать следующий код.
Этот код является супер урезанной версией WYSIWYG-редактора для одного из наших программных продуктов.
Просто создайте новую форму, поместите на нее элемент управления WebBrowser и поместите ее в form_load
Me.WebBrowser1.Navigate("about:blank")
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