C# Webkit.Net等待页面完全加载

C# Webkit.Net等待页面完全加载,c#,webkit,C#,Webkit,我正在尝试使用webbrowser制作一个C#windows窗体应用程序 我正在使用webkit浏览器: 我把webbrowser放在一个类文件中,这样我就可以通过我将要使用的所有表单访问它 生成webbrowser的代码: public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser(); 我有一段代码,它给出了一些问题: globalVars.mainBrowser.Navigate("http://www.somes

我正在尝试使用webbrowser制作一个C#windows窗体应用程序

我正在使用webkit浏览器:

我把webbrowser放在一个类文件中,这样我就可以通过我将要使用的所有表单访问它

生成webbrowser的代码:

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):

但是没有显示消息框。但如果我使用本地(同一表单)webkit浏览器,我会收到te MessageBox。但是用户字段没有填写

即使documentCompleted事件中的断点也不会触发。看来事件列表器不起作用了


那么为什么它不起作用呢

您只需在Webbrowser上的Document Completed事件上创建一个事件侦听器,也可以像这样动态创建它:

globalVars.mainbrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(mainbrowser_DocumentCompleted);
其中,
mainbrowser\u DocumentCompleted
是您可以在其中执行类似操作的空白的名称(我使用了您提供的代码的名称):


添加以下代码可以在浏览器处于不可见模式时触发事件

using (Bitmap bmp = new Bitmap(webKitBrowser.Width, webKitBrowser.Height))
{
    webKitBrowser.DrawToBitmap(
        bmp, 
        new Rectangle(
            webKitBrowser.Location.X, 
            webKitBrowser.Location.Y, 
            webKitBrowser.Width, 
            webKitBrowser.Height
        )
    );
}

也许文档完成事件是一个选项?@Tearsdontfalls,mayby。但是代码会是什么样子呢?因为我从中执行此操作的表单并不总是处于打开状态…抱歉,但是如果我在事件的if语句中执行MessageBox,它将不会显示。。。我将用更多信息更新这个问题。.好的,我更新了代码(添加了新的WebBrowserDocumentCompletedEventHandler(浏览器\u DocumentCompleted)以添加事件处理程序)。如果没有,可能就是这样:导航/导航事件中是否有可能取消浏览的代码?它仍然没有到达断点(我在var send=sender….行中设置了断点,并且除了更新的问题(关于webbrowser),我没有其他代码在webkit浏览器能够浏览之前,我是否必须先通过webkit浏览器本身做一些事情?(注意,我不会在表单上的任何地方显示它)你知道webbrowser是否真的在浏览吗?你是否使webbrowser在某处可见/添加到你的控制列表中(可能它必须可见才能工作)现在这样做,现在它触发断点…因此,如果我已将webbrowser添加到表单中,它会工作…但是如果我执行所有操作(登录)然后关闭表单并打开另一个表单,webbrowser还会登录吗???谢谢你回答我的问题。几年后,我手头没有具体的项目,所以我无法测试它。但这可能会对将来的某个人有所帮助!当然,这是我添加的一点。我在bi之后已经解决了这个问题t的trail n错误。奇怪的是,它不允许触发事件。我正在使用它作为非windows应用程序的一部分。
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    var send = sender as WebKit.WebKitBrowser;
    if (send.Url == e.Url) {
        globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
    }
}
using (Bitmap bmp = new Bitmap(webKitBrowser.Width, webKitBrowser.Height))
{
    webKitBrowser.DrawToBitmap(
        bmp, 
        new Rectangle(
            webKitBrowser.Location.X, 
            webKitBrowser.Location.Y, 
            webKitBrowser.Width, 
            webKitBrowser.Height
        )
    );
}