Win*_*inz 5 html c# string wysiwyg datagridview
我有一个带HTML字符串的datagridview.使用CellDoubleClick事件,我在WebBrowser控件中显示html字符串.
在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);
}
}
Run Code Online (Sandbox Code Playgroud)
在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";
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我可以成功地将HTML字符串显示为纯文本,但是我无法编辑它.或者,如果我使用此代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
这将是一个空白表格,但我可以写信给它.
我有一种感觉它与range.pasteHTML(webBrowser1.DocumentText);Form2_Load方法有关,但我不知道任何其他方法将允许我在打开Form2时从DataGridView显示HTML字符串.
我想允许用户能够将HTML字符串编辑为纯文本(之后它将被转换回HTML并显示在datagridview中).
这是可能的!您可以使用默认WebBrowser控件编辑 HTML,
添加对“Microsoft.mshtml.dll”文件的引用(可在此处获取)。
假设您的 WebBrowser 名为“browser”,请在 Form.Load 事件中添加此代码
(browser.Document.DomDocument as mshtml.IHTMLDocument2).designMode = "On";
调用以下函数来格式化所选文本:
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);
Run Code Online (Sandbox Code Playgroud)
该WebBrowser控件不允许编辑,并且仅用于查看网页。它实际上是在幕后运行的 Internet Explorer/Trident 渲染引擎,用于解析 HTML 并渲染具有 DOM/JS 支持的最终页面。在我看来,没有流行的浏览器支持 HTML 页面的编辑,IE 也不支持。
| 归档时间: |
|
| 查看次数: |
5627 次 |
| 最近记录: |