WebBrowser - 清空DocumentText

时间:2011-12-15 20:28:49

标签: c# browser

我试图使用WebBrowser课程,但当然它不起作用。

我的代码:

WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");

while(browser.DocumentText == "")
{
    continue;
}
string html = browser.DocumentText;

browser.DocumentText始终为""。为什么呢?

5 个答案:

答案 0 :(得分:5)

您应该使用DocumentCompleted事件,如果您没有WebForms应用程序,则可能还需要ApplicationContext。

static class Program
{
    [STAThread]
    static void Main()
    {
        Context ctx = new Context();
        Application.Run(ctx);

        // ctx.Html; -- your html
    }
}

class Context : ApplicationContext
{
    public string Html { get; set; }

    public Context()
    {
        WebBrowser browser = new WebBrowser();
        browser.AllowNavigation = true;
        browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
        browser.Navigate("http://www.google.com");
    }

    void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        Html = ((WebBrowser)sender).DocumentText;
        this.ExitThread();
    }
}

答案 1 :(得分:3)

WebBrowser在当前线程完成它的工作之前不会做它的工作,如果你把它改成这样的话:

        WebBrowser browser = new WebBrowser();
        browser.Navigate("http://www.google.com");
        browser.Navigated += (s, e) =>
            {
                var html = browser.DocumentText;
            };

将设置变量。

但是,正如其他人所说,完成的文件是一个更好的附加事件,因为那时整个文件将完成(适当的名称!)

        WebBrowser browser = new WebBrowser();
        browser.Navigate("http://www.google.com");

        browser.DocumentCompleted += (s, e) =>
            {
                var html = browser.DocumentText;
                html.ToString();
            };

答案 2 :(得分:2)

附加到DocumentCompleted事件,代码如下

browser.DocumentCompleted += (s, e) =>
{
    string html = browser.DocumentText;
};

答案 3 :(得分:1)

如果您需要DocumentText,则应处理DocumentCompleted事件

  browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);

见下面的事件

void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {

        WebBrowser wb = (WebBrowser)sender;
        string text = wb.DocumentText;

}

答案 4 :(得分:-1)

尝试这样的事情

string url = string.Empty:
string html = "http://www.google.com/";
string url = html;
if (!url.StartsWith("http://") && !url.StartsWith("https://"))
{
   url = "http://" + url;
}
browser.Navigate(new Uri(url)); 

在必要时在While循环中替换它