我不明白为什么我收到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());
}
答案 0 :(得分:0)
我敢打赌,因为您尝试从非UI线程访问UI元素,所以您遇到了问题。
您可以将System.Threading.Timer
替换为System.Windows.Forms.Timer
,这会在主线程上重新启动它。
或者您可以通过调用Invoke
来尝试访问主线程上的UI元素:
this.Invoke(new Action(() => newElement.InnerText = nameBox.ToString()));