指定的类型转换无效
本文关键字:无效 类型转换 | 更新日期: 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
:
this.Invoke(new Action(() => newElement.InnerText = nameBox.ToString()));