2011-05-18 13 views
7

मेरे पास एक Winform और WebBrowser नियंत्रण है और मैं चुनिंदा HTML नियंत्रण में एक विकल्प बदल रहा हूं।RaiseEvent ("onchange")

webBrowser1.Document 
    .GetElementsByTagName("select")[4] 
    .GetElementsByTagName("option")[13] 
    .SetAttribute("selected", "true"); 

अब यह काम करता है और आवश्यक विकल्प का चयन करता है, लेकिन यह onchange ईवेंट सक्रिय नहीं है। चयन में कोई तत्व आईडी नहीं है लेकिन इसमें कक्षा का नाम है।

मैंने कोशिश की:

webBrowser1.Document 
    .GetElementsByTagName("select")[4] 
    .RaiseEvent("onchange"); 

और

webBrowser1.Document 
    .GetElementsByTagName("select")[4] 
    .GetElementsByTagName("option")[13] 
    .RaiseEvent("onchange"); 

लेकिन व्यर्थ में।

उत्तर

3

कोशिश मैंने कोशिश की और एक विकल्प का चयन करने के बाद एक टैब कुंजी भेजा है और यह onchange घटना उठाया।

webBrowser1.Document.GetElementsByTagName("select")[4].Focus(); 
    webBrowser1.Document.GetElementsByTagName("select")[4] 
.GetElementsByTagName("option")[13].SetAttribute("selected", "true"); 
    SendKeys.Send("{TAB}"); 

सबकुछ अब अच्छा है।

+1

वाह, अच्छा हैक! – harsimranb

+0

अच्छा! अच्छी सोच। – DeeArgee

-1

चेंज इवेंट को बढ़ाने का प्रयास करें: उदा। RaiseEvent ("onChange");

संपादित करें: यह विकल्प का चयन नहीं करेगा, विकल्प नहीं।

EDIT2:

var selectControlElement = webBrowser1.Document 
    .GetElementsByTagName("select")[4]; 
selectControlElement.RaiseEvent("onChange"); 

इसके अलावा इसके लायक निरीक्षण selectControlElement अगर यह किसी भी घटनाओं को देखने के लिए।

एक अन्य विकल्प (मेरे द्वारा अपरीक्षित)

object obj = selectControlElement.DomElement; 
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("onchange"); 
mi.Invoke(obj, new object[0]); 

इसके अलावा

selectControlElement.InvokeMember("onchange"); 
+0

हाँ मैं कि पहले से ही, कोड पर गौर किया है। – Ismail

+0

पूंजी सी, ऑनचेंज में (हालांकि मैंने सोचा कि इससे कोई फर्क नहीं पड़ता)। –

+0

हां इससे कोई फर्क नहीं पड़ता। मैंने दोनों की कोशिश की। – Ismail

1

विवरण के लिए नीचे दिए गए कोड को देखें।

void SetComboItem(string id, string value) 
    { 

     Forms.HtmlElement ddRouteSelected = wBrowser.Document.GetElementById(id); 
     foreach (Forms.HtmlElement item in ddRouteSelected.Children) 
     { 
      if (item.InnerText != null && item.InnerText.ToLower().Equals(value.ToLower())) 
      { 
       item.SetAttribute("selected", "Selected"); 
       item.SetAttribute("value", value); 
       ddRouteSelected.InvokeMember("onchange"); 
       break; 
      } 
     } 
    } 
संबंधित मुद्दे