我有两个选择。类别和子类别。
我试图像这样改变它们:
var select_cat = webBrowser1.Document.GetElementsByTagName("select")["cat"];
select_cat.Focus();
select_cat.SetAttribute("value", "2");
select_cat.InvokeMember("onchange");
select_cat.RemoveFocus();
var select_subcat = webBrowser1.Document.GetElementsByTagName("select")["subcat"];
select_subcat.Focus();
select_subcat.SetAttribute("value", "102");
select_subcat.InvokeMember("onchange");
select_subcat.RemoveFocus();
根据第一个(类别)中选择的内容动态生成subcat选择。 如果我运行此代码,我会得到异常:发生'System.NullReferenceException'类型的第一次机会异常 这是因为我猜想webBrowser1元素不存在subcat选择。有没有办法一个接一个地选择它们?
答案 0 :(得分:0)
你的问题是select_cat.InvokeMember("onchange")
正在开始一个新的"线程"在浏览器中。因此,在onchange事件填充subcat之前,您正在调用select_subcat
。你必须要调用" onchange"直接在你的代码中,或实现某种spinlock等待subcat填充。