【发布时间】:2020-11-30 11:18:43
【问题描述】:
我正在尝试在 Windows 窗体中的 WebBrowser 控件中显示一些 html,并希望根据 html 内容调整窗体的大小。
我可以通过查看DocumentCompleted 事件中的webBrowser1.Document.Body.ScrollRectangle.Size 来做到这一点。但是,在显示表单之前不会触发该事件。因此我需要显示表单,然后重新调整大小。
有什么方法可以避免这种闪烁并将表单初始化为正确的大小?
【问题讨论】:
-
在打开此表单的代码中,只需创建实例,例如
var f = new FormBrowser();(假设这是您的表单的类名)。在FormBrowser构造函数中,调用[WebBrowser].Navigate("[https://Some address]");。在DocumentCompleted中,在var browser = sender as WebBrowser; if (browser.ReadyState != WebBrowserReadyState.Complete) return;之后,测量文档并调用this.Show();。 -
您在此处找到的代码:WebBrowser Html Document to Image 可以帮助调整 HTML 文档的大小,以备不时之需。
-
@Jimi 首先,我没有导航到网站,只是试图将 DocumentText 设置为现有的 html 字符串。其次,您指向的链接答案是使用 DocumentCompleted 事件,该事件在我的表单显示之前不会触发。
-
导航到 HTTP 地址或手动设置文档内容(我假设您使用
HtmlDocument.Write())是同样的事情。DocumentCompleted事件与是否显示表单无关:该事件在其他地方引发,并且无论表单的状态如何,一旦初始化表单,就会调用其委托(在InitializeComponent()完成之后)或该事件已被订阅。 -
我只是在设置
webBrowser1.DocumentText。此外,如果我省略了f.ShowDialog();命令,则永远不会调用 DocumentCompleted。
标签: c# winforms webbrowser-control