source open net example bootstrap asp c# html string datagridview wysiwyg

c# - open - Edición de HTML con un editor WYSIWYG



text editor wysiwyg (1)

¡Es posible! Puede editar HTML utilizando el WebBrowser predeterminado WebBrowser ,

  1. Agregue una referencia al archivo "Microsoft.mshtml.dll", disponible aquí.

  2. Suponiendo que su WebBrowser se denomina "navegador", agregue este código en el evento Form.Load (browser.Document.DomDocument as mshtml.IHTMLDocument2).designMode = "On";

  3. Llame a las siguientes funciones para formatear el texto seleccionado:

browser.document.ExecCommand("Bold", false, null); browser.document.ExecCommand("Underline", false, null); browser.document.ExecCommand("Italics", false, null); browser.document.ExecCommand("StrikeThrough", false, null); browser.document.ExecCommand("FontName", false, "Times New Roman"); browser.document.ExecCommand("FontName", false, "Arial"); browser.document.ExecCommand("FontName", false, "etc."); browser.document.ExecCommand("FontSize", false, "1"); browser.document.ExecCommand("FontSize", false, "2"); browser.document.ExecCommand("FontSize", false, "3"); browser.document.ExecCommand("InsertUnorderedList", false, null); browser.document.ExecCommand("InsertOrderedList", false, null); browser.document.ExecCommand("Cut", false, null); browser.document.ExecCommand("Copy", false, null); browser.document.ExecCommand("Paste", false, null); browser.document.ExecCommand("CreateLink", true, null);

El control WebBrowser no permite la edición y está diseñado para ver solo páginas web. Es en realidad el motor de renderizado de Internet Explorer / Trident que opera detrás de escena que analiza el HTML y hace que la página final se complete con el soporte de DOM / JS. Ningún navegador popular admite la edición de páginas HTML, IMO y tampoco IE.

Tengo una vista de cuadrícula de datos con cadenas de HTML. Usando un evento CellDoubleClick, estoy mostrando la cadena html en un control WebBrowser.

En Form1

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { try { if (e.ColumnIndex != 0 && e.RowIndex != -1) { string s = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); this.f2 = new Form2(s); f2.ShowDialog(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } }

En Form2

private IHTMLDocument2 doc; string reply; public Form2(string reply) { InitializeComponent(); this.reply = reply; } private void Form2_Load(object sender, EventArgs e) { webBrowser1.DocumentText = reply; <--- string from DataGridView IHTMLTxtRange range = doc.selection.createRange() as IHTMLTxtRange; range.pasteHTML(webBrowser1.DocumentText); range.collapse(false); range.select(); doc = webBrowser1.Document.DomDocument as IHTMLDocument2; doc.designMode = "On"; }

Usando el código anterior, puedo mostrar con éxito la cadena HTML como texto sin formato, sin embargo, no puedo editarla. Alternativamente, si uso este código:

private IHTMLDocument2 doc; private void Form2_Load(object sender, EventArgs e) { webBrowser1.DocumentText = reply; <--- string from DataGridView doc = webBrowser1.Document.DomDocument as IHTMLDocument2; doc.designMode = "On"; IHTMLTxtRange range = doc.selection.createRange() as IHTMLTxtRange; range.pasteHTML(webBrowser1.DocumentText); range.collapse(false); range.select(); }

Será un formulario en blanco, pero podré escribir en él.

Tengo la sensación de que tiene que ver con range.pasteHTML(webBrowser1.DocumentText); estar en el método Form2_Load, pero no conozco ningún otro método que me permita mostrar la cadena HTML de DataGridView al abrir Form2.

Quiero permitir que los usuarios puedan editar la cadena HTML como texto sin formato (después de lo cual se convertirá nuevamente a HTML y se mostrará en la vista de cuadrícula de datos).