Mam datagridview z ciągami HTML. Używając zdarzenia CellDoubleClick, wyświetlam ciąg html w formancie WebBrowser.Edytowanie HTML za pomocą edytora WYSIWYG
W 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);
}
}
W 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";
}
Stosując powyższy kod, mogę z powodzeniem wyświetlić ciąg HTML w postaci zwykłego tekstu, jednak nie jestem w stanie go zmienić. Alternatywnie, jeśli użyję tego kodu:
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();
}
Będzie to pusty formularz, ale będę mógł do niego napisać.
Mam wrażenie, że ma to związek z range.pasteHTML(webBrowser1.DocumentText);
będąc w metodzie Form2_Load, ale nie jestem świadomy żadnej innej metody, która pozwoli mi wyświetlić ciąg znaków HTML z DataGridView podczas otwierania Form2.
Chcę umożliwić użytkownikom edycję ciągów HTML w postaci zwykłego tekstu (po czym zostanie przekonwertowany z powrotem na HTML i wyświetlony w widoku datagrid).