我为一个带有HTML文本的RichTextBox(使用HtmlAgilityPack解析)编写了一个跨线程更新的扩展。现在我也需要纯文本,从HTML标签中剥离,这是精确的innerText返回。
但是如何从代表那里回来?
public static string AppendHTMLText(this RichTextBoxEx box, string html)
{
// cross thread allowed
if (box.InvokeRequired)
{
box.Invoke((MethodInvoker)delegate()
{
return AppendHTMLText(box, html); // ???
});
}
else
{
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
//document.OptionFixNestedTags = false;
//document.OptionCheckSyntax = false;
//document.OptionWriteEmptyNodes = true;
document.LoadHtml(html);
HtmlAgilityPack.HtmlNode doc = document.DocumentNode.SelectSingleNode("/");
HtmlAgilityPack.HtmlNodeCollection nodes = doc.ChildNodes;
parseHTML(doc.ChildNodes, box);
return doc.InnerText;
}
}
}
谢谢!
答案 0 :(得分:1)
我会按以下方式进行:
public static void AppendHTMLText(this RichTextBoxEx box, string html)
{
// use HtmlAgilityPack here
// ...
string text = doc.InnerText;
if (box.InvokeRequired)
{
box.Invoke((MethodInvoker)delegate()
{
box.AppendText(text);
});
}
else
{
box.AppendText(text);
}
}