指定的类型转换无效

本文关键字:无效 类型转换 | 更新日期: 2023-09-27 17:53:35

我不明白为什么我得到一个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());

    }

指定的类型转换无效

我打赌你有一个问题,因为你试图从一个非UI线程访问一个UI元素。

你可以用System.Windows.Forms.Timer代替System.Threading.Timer,它会在主线程上触发它的事件。

或者你可以尝试通过调用Invoke:

在主线程上访问UI元素。
this.Invoke(new Action(() => newElement.InnerText = nameBox.ToString()));