更改动态生成的选择

时间:2014-11-06 23:54:04

标签: c# webbrowser-control

我有两个选择。类别和子类别。

我试图像这样改变它们:

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选择。有没有办法一个接一个地选择它们?

1 个答案:

答案 0 :(得分:0)

你的问题是select_cat.InvokeMember("onchange")正在开始一个新的"线程"在浏览器中。因此,在onchange事件填充subcat之前,您正在调用select_subcat。你必须要调用" onchange"直接在你的代码中,或实现某种spinlock等待subcat填充。