【发布时间】:2013-01-07 11:12:44
【问题描述】:
我正在尝试使用网络浏览器制作 C# windows 窗体应用程序。
我正在使用 webkit 浏览器:Link to the browser
我将网络浏览器放入一个类文件中,因此我可以通过我将要使用的所有表单访问它。
生成网络浏览器的代码:
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();
我的这段代码有一些问题:
globalVars.mainBrowser.Navigate("http://www.somesite.com/");
while (globalVars.mainBrowser.IsBusy)
{
System.Threading.Thread.Sleep(500);
}
globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
但它不起作用。如果我在一段时间后做一个消息框,它会在可以呈现页面之前显示出来......
那么等待网站完全加载的最佳方法是什么?
更新 1
在一个独立的类文件中,我是否像这样制作 webkit 控件:
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();
在一个表单中,我现在得到了这段代码(感谢 Tearsdontfalls):
public void loginthen()
{
globalVars.mainBrowser.DocumentCompleted += mainBrowser_DocumentCompleted;
globalVars.mainBrowser.Navigate("http://www.somesite.com/");
}
void mainBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var send = sender as WebKit.WebKitBrowser;
if (send.Url == e.Url)
{
MessageBox.Show("Inloggen");
globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
}
}
但是没有消息框出现。但是,如果我使用本地(在同一表单上)webkit 浏览器,我会得到消息框。但是用户字段没有填写。
即使是 documentCompleted 事件中的断点也不会被触发。所以看起来事件监听器不起作用......
那么为什么它不起作用?
【问题讨论】:
-
也许文档完成事件是一个选项?
-
@Tearsdontfalls,也许吧。但是代码会是什么样子呢?因为我这样做的表格并不总是在...