2014-11-06 6 views
0

두 개의 선택이 있습니다. 범주 및 하위 범주. 이처럼 변화에동적으로 생성되는 선택 변경

나는 시도했다 :

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 select가 존재하지 않기 때문입니다. 하나씩 선택할 수있는 방법이 있습니까?

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

내 제목에 태그를 삽입하는 것에 대해 죄송합니다. 다시는 그것을하지 않을 것이다. – user1410644

답변

0

select_cat.InvokeMember("onchange")은 브라우저에서 새로운 "스레드"를 시작하고 있습니다. 따라서 subchange에 onchange 이벤트가 채워지기 전에 select_subcat을 호출합니다. 코드에서 "onchange"라는 함수를 직접 호출하거나 subcat이 채워지기를 기다리는 일종의 스핀 록을 구현해야합니다.

+0

나는 그것이 어떻게 든 채워지기를 기다리고 있다고 생각했지만 아무 것도 내 마음에 들지 않았다. – user1410644

+0

자바 스크립트 코드에 액세스 할 수 있습니까? C#보다는 select_cat에 대한 onchange 이벤트의 속성을 설정할 수 있습니다. – DWCP

관련 문제