我在Visual Studio中使用WinForms和C#。
应用程序有两种形式,其中一种在启动时可见。在启动时,另一个(隐藏)表单开始在WebBrowser组件上导航,当它被加载时,它应该隐藏第一个表单并显示浏览器。
我不确定如何检查表单是否完成。但是我发现可以使用:
if (browser.ReadyState == WebBrowserReadyState.Complete)
但我不知道表格如何沟通。
答案 0 :(得分:1)
WebBrowser有一个很好的小事件,叫做OnDocumentCompleted,你可以听。它会在页面加载时触发。
Router.go('settings');
(代码未经过测试,可能不正确,但它应该能让您了解您可以测试的内容)
可能需要公开,如建议here。
答案 1 :(得分:1)
在您的网络浏览器的表单上创建一个公共方法:
public bool IsWebBrowserReady
{
get { return browser.ReadyState == WebBrowserReadyState.Complete; }
}
然后在您的主要内容中出现类似内容:
private static void Main(string[] args)
{
//Initialize forms
var browserForm = new Form1();
var startForm = new StartForm();
//Show first form
startForm.Show();
//Make sure second form is not visible
browserForm.WindowState=FormWindowState.Minimized;
browserForm.ShowInTaskbar = false;
//"Show" second form
browserForm.Show();
//Wait for it to be ready
while (!browserForm.IsWebBrowserReady) Application.DoEvents();
//Hide first form
startForm.Hide();
//Show second form
browserForm.ShowInTaskbar = true;
browserForm.WindowState = FormWindowState.Normal;
Application.Run();
}
或者你可以将一些逻辑移入StartForm,方法是将第二个表单的引用传递给它。然后,您可以从第一个表单访问IsWebBrowserReady。但是,如果这只是一个闪屏解决方案,那么我会说这会有点过分。
作为轮询Web浏览器状态的替代方法,还可以对Web浏览器OnDocumentCompleted做出反应。这将是一个不同的模式,但看看僵尸的答案,以获得一个想法。
答案 2 :(得分:0)
我说,试试这个。 它不是最好的解决方案,但它可以胜任。
正如我所说,不是最优雅的解决方案,但它是目前完成任务的最快捷方式。