我有一个带有 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);
}
}
在 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";
}
使用上面的代码,我可以成功地将 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();
}
这将是一个空白表格,但我可以写信给它。
我觉得这与range.pasteHTML(webBrowser1.DocumentText);
使用 Form2_Load 方法有关,但我不知道有任何其他方法可以让我在打开 Form2 时显示来自 DataGridView 的 HTML 字符串。
我想让用户能够将 HTML 字符串编辑为纯文本(之后它将被转换回 HTML 并显示在 datagridview 中)。