Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在事件运行后获取文档正文内容(WebBrowser控件)_C#_Class_Events_Operation - Fatal编程技术网

C# 如何在事件运行后获取文档正文内容(WebBrowser控件)

C# 如何在事件运行后获取文档正文内容(WebBrowser控件),c#,class,events,operation,C#,Class,Events,Operation,如何在\u web\u ProgressChanged运行后获得文档结果 public class WebHelper { WebBrowser _web = null; public string DocResult = string.Empty; public WebHelper(string url) { _web = new WebBrowser(); _web.ProgressChanged += _web_Progre

如何在\u web\u ProgressChanged运行后获得文档结果

public class WebHelper
{
    WebBrowser _web = null;

    public string DocResult = string.Empty;
    public WebHelper(string url)
    {
        _web = new WebBrowser();
        _web.ProgressChanged += _web_ProgressChanged;
        _web.Navigate(url);
    }

    void _web_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
    {
        DocResult = _web.Document.Body.InnerHtml;
    }
}
class MyWork
{
    public string GetDocContent(string url)
    {
        WebHelper wh = new WebHelper(url);
        return wh.DocResult;
    }
}
如何在\u web\u ProgressChanged运行后获得文档结果

public class WebHelper
{
    WebBrowser _web = null;

    public string DocResult = string.Empty;
    public WebHelper(string url)
    {
        _web = new WebBrowser();
        _web.ProgressChanged += _web_ProgressChanged;
        _web.Navigate(url);
    }

    void _web_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
    {
        DocResult = _web.Document.Body.InnerHtml;
    }
}
class MyWork
{
    public string GetDocContent(string url)
    {
        WebHelper wh = new WebHelper(url);
        return wh.DocResult;
    }
}
在web ProgressChanged运行后,如何获得DocResult

public class WebHelper
{
    WebBrowser _web = null;

    public string DocResult = string.Empty;
    public WebHelper(string url)
    {
        _web = new WebBrowser();
        _web.ProgressChanged += _web_ProgressChanged;
        _web.Navigate(url);
    }

    void _web_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
    {
        DocResult = _web.Document.Body.InnerHtml;
    }
}
class MyWork
{
    public string GetDocContent(string url)
    {
        WebHelper wh = new WebHelper(url);
        return wh.DocResult;
    }
}
你没有。ProgressChanged至少在十年前就不再有用了。在上世纪90年代,浏览器通过低速电话调制解调器连接到互联网服务提供商时,这仍然有一定的意义。而且网页仍然非常单调,几乎没有标记和样式,因此用户不必等待几分钟就可以加载网页。ProgressChanged当时很有用,可以驱动一个进度条来指示他需要等待多长时间

到此为止,今天的网页是通过许多数据传输建立起来的。一打或更多,总计数百KB。有些从web服务器本身传输数据,有些从CDN传输数据,有些从第三方服务器传输数据,例如分析。有些是html,有些是css,有些是javascript,有些是图像。每次挠痒的过程都会发生变化,当网页忙于加载时,它会发生剧烈的变化。浏览器不再显示进度,只是一个微调器


ProgressChanged事件和DOM状态之间没有联系,从来没有联系。在尝试使用
文档
属性之前,必须使用DocumentCompleted事件。

您不理解此代码中操作的含义。我明白你所说的意思。但我只需要在活动结束后获取内容。你可以看到这个例子,你就会明白我的意思。谢谢@Hans Passant。我发现用while(_wb.ReadyState!=WebBrowserReadyState.Complete){Application.DoEvents();}修复了它。使用DocumentCompleted事件。是否确实使用类WebHelper获取DocResult并将其插入到控件中。我已将事件进度更改为DocumentComplete,但DocResult为空。如果使用事件DocumentComplete从webBrowser控件导航搜索uri(),则不会获得列表搜索结果。这是谷歌主页的获取文档。事件导航,文档完成,ProgressChanged-只有在ProgressChanged事件完成后…才能从google向您获取列表搜索结果。