指定的强制转换是无效的Web浏览器

时间:2014-03-26 03:41:36

标签: c# winforms visual-studio-2012

我不明白为什么我收到Specified cast is not valid错误。它发生在HtmlElement变量newElement上。函数moreInfo()由a调用 System.Threading.Timer回调。

    public void moreInfo()
    {
        HtmlElement newElement = webBrowser.Document.GetElementById("order_billing_name");
        newElement.InnerText = nameBox.ToString();

        newElement = webBrowser.Document.GetElementById("order_email");
        newElement.InnerText = emailBox.ToString();

        newElement = webBrowser.Document.GetElementById("order_tel");
        newElement.InnerText = telephoneBox.ToString();

        newElement = webBrowser.Document.GetElementById("order_billing_address");
        newElement.InnerText = addressBox.ToString();

        newElement = webBrowser.Document.GetElementById("order_billing_zip");
        newElement.InnerText = zipBox.ToString();

        newElement = webBrowser.Document.GetElementById("order_billing_city");
        newElement.InnerText = cityBox.ToString();

        newElement = webBrowser.Document.GetElementById("order_billing_state");
        newElement.SetAttribute("value", stateBox.ToString());

        newElement = webBrowser.Document.GetElementById("order_billing_country");
        newElement.SetAttribute("value", countryBox.ToString());


    }

1 个答案:

答案 0 :(得分:0)

我敢打赌,因为您尝试从非UI线程访问UI元素,所以您遇到了问题。

您可以将System.Threading.Timer替换为System.Windows.Forms.Timer,这会在主线程上重新启动它。

或者您可以通过调用Invoke来尝试访问主线程上的UI元素:

this.Invoke(new Action(() => newElement.InnerText = nameBox.ToString()));