我有一个c# win应用程序。我用html格式将文本保存在数据库中,但我想在网页浏览器中将其显示给我的user.How,以便将字符串html内容显示到网页浏览器控件中?
提前感谢
发布于 2011-03-19 22:33:03
试试这个:
webBrowser1.DocumentText =
"<html><body>Please enter your name:<br/>" +
"<input type='text' name='userName'/><br/>" +
"<a href='http://www.microsoft.com'>continue</a>" +
"</body></html>";
发布于 2014-05-19 18:59:59
您可以执行以下操作,而不是导航到空白
webBrowser1.DocumentText="0";
webBrowser1.Document.OpenNew(true);
webBrowser1.Document.Write(theHTML);
webBrowser1.Refresh();
不需要等待事件或其他任何事情。您可以查看OpenNew的MSDN,而我已经在我的一个项目中测试了初始DocumentText赋值,并且它工作正常。
发布于 2013-12-03 20:20:43
正如Thomas W.评论的那样-我几乎错过了这条评论,但我也有同样的问题,所以我认为这是值得重写的答案。
主要问题是,在将webBrowser1.DocumentText
第一次赋值给某些html之后,后续赋值不起作用。
托马斯链接的解决方案可以在http://weblogs.asp.net/gunnarpeipman/archive/2009/08/15/displaying-custom-html-in-webbrowser-control.aspx上找到详细信息,但我将在下面总结一下,以防这个页面在未来变得不可用。
简而言之,由于webBrowser控件的工作方式,每次要更改内容时都必须导航到新页。因此,作者提出一种更新控件的方法,如下所示:
private void DisplayHtml(string html)
{
webBrowser1.Navigate("about:blank");
if (webBrowser1.Document != null)
{
webBrowser1.Document.Write(string.Empty);
}
webBrowser1.DocumentText = html;
}
然而,我发现在我当前的应用程序中,我从if(webBrowser1.Document != null)
行获得了一个CastException。我不确定为什么会这样,但我发现如果我在try catch中包装整个if
代码块,所需的效果仍然有效。请参见:
private void DisplayHtml(string html)
{
webBrowser1.Navigate("about:blank");
try
{
if (webBrowser1.Document != null)
{
webBrowser1.Document.Write(string.Empty);
}
}
catch (CastException e)
{ } // do nothing with this
webBrowser1.DocumentText = html;
}
因此,每次执行DisplayHtml
函数时,我都会收到来自if
语句的CastException
,因此永远不会到达if语句的内容。但是,如果我注释掉if
语句,这样就不会收到CastException
,那么浏览器控件就不会更新。我怀疑Document属性背后的代码还有另一个副作用,它导致了这种效果,尽管它也抛出了一个异常。
无论如何,我希望这对人们有帮助。
https://stackoverflow.com/questions/5362591
复制相似问题