【问题标题】:How to update document text of WebBrowser control after adding elements?添加元素后如何更新WebBrowser控件的文档文本?
【发布时间】:2016-08-09 15:21:32
【问题描述】:

在表单加载中我有这行代码

webBrowser1.DocumentText = "<table id='table1'><tr><td>hello</td></tr></table>";

在按钮上单击我有这些代码行来添加新的表格行。 但在消息框中的更改不会反映。我是否应该手动更新 webbrowser 内容,如文档文本。如果可以怎么办?

    HtmlElement element = webBrowser1.Document.GetElementById("table1");
    HtmlElement mTBody = element.FirstChild;
    HtmlElement mTR = webBrowser1.Document.CreateElement("tr");
    HtmlElement mTD1 = webBrowser1.Document.CreateElement("td");

    mTD1.InnerText = "Teamviewer Id1";
    mTD1.SetAttribute("id", "TeamviewerId1");

    mTR.AppendChild(mTD1);
    mTBody.AppendChild(mTR);

    MessageBox.Show(webBrowser1.DocumentText);

【问题讨论】:

    标签: c# winforms webbrowser-control


    【解决方案1】:

    内容是从网络浏览器异步获取的。

    尝试订阅DocumentCompleted 事件,然后从那里显示DocumentText

    选项 1

    添加元素后刷新您的网络浏览器:

    webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
    

    然后从DocumentCompleted事件中获取DoucmentText

    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        MessageBox.Show(sender.DocumentText);
    }
    

    选项 2

    如果上述选项不起作用或没有触发 DoucmentCompleted 事件。

    在按钮单击事件上添加元素后尝试导航到您的网址。

    webBrowser1.Navigate(url); //Instead of the refresh
    

    然后在您的 DocumentCompleted 事件中,检查 URL 是否匹配(因为具有多个帧会多次触发 DocumentCompleted 事件)然后显示您的 DocumentText

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (e.Url.Equals(webBrowser1.Url)) {
                MessageBox.Show(sender.DocumentText);
            }
        }
    

    【讨论】:

    • 此处 webBrowser1_DocumentCompleted 事件仅在首次加载时触发。向其添加动态元素后不会触发。
    • 也许在添加元素后尝试刷新网络浏览器控件。查看我的更新答案
    • 不,这两种方法都不起作用。它仅在我编写此行时才有效 webBrowser1.DocumentText = element.OuterHtml.ToString();添加元素后。手动执行可能是因为我使用 HtmlElement 作为本地对象引用表。但如果是这样,更改将如何显示在 webbrowser 控件中。
    • 是的,我不太确定。我所知道的是 DocumentText 仅在 DocumentCompleted 事件上设置,这可能与 DOM 显示的内容不同。如果您可以在添加元素后触发 DoucmentCompleted 事件,那么 DocumentText 应该是正确的
    猜你喜欢
    • 2011-01-11
    • 2010-10-12
    • 1970-01-01
    • 2012-08-29
    • 2021-10-29
    • 2012-01-15
    • 2013-03-28
    • 1970-01-01
    • 2021-06-11
    相关资源
    最近更新 更多