none
WebBrowser调用Html控件问题 RRS feed

  • 常规讨论

  •                     HtmlDocument doc = webBrowser2.Document;
                        HtmlElement cbElement = doc.GetElementById("DDLGroup");
                        cbElement.SetAttribute("value", "2");
                        cbElement.RaiseEvent("onchange");
                        cbElement.SetAttribute("disabled", "false");

    cbElement onchange事件以后想禁用cbElement 控件。但是这两句放在一起执行总是不成功,把这两句分别放入两个button事件中执行可以成功。
    2012年8月20日 8:12

全部回复

  • RaiseEvent之前调用cbElement.AttachEventHandler,给其添加一个onchanged事件看看会不会自动调用该事件

    2012年8月20日 8:46
  • 你好,你说的是这样吗?好像不行。页面闪了一下又还原成最初状态了。
                        HtmlDocument doc = webBrowser2.Document;
                        HtmlElement cbElement = doc.GetElementById("DDLGroup");
                        cbElement.SetAttribute("value", "2");
                        cbElement.AttachEventHandler("onchange", new EventHandler(cbElement_onchange));
                        cbElement.RaiseEvent("onchange");
            public void cbElement_onchange(object sender, EventArgs e)
            {
                HtmlDocument doc = webBrowser2.Document;
                HtmlElement cbElement = doc.GetElementById("DDLGroup");
                cbElement.SetAttribute("disabled", "false");
            }

    2012年8月20日 9:34
  • 为什么要调用onchange事件呢,没有其他的标签/按钮可以提交触发onchange事件吗?你的两句放在一起执行总是不成功是什么情况?

    2012年8月20日 9:46
  • 我的目的就是想让WebBrowser去操作页面中的选择项。用户不能参与页面操作只能看到结果。所以当WebBrowser操作完毕以后我想把下拉列表禁用了cbElement.SetAttribute("disabled", "false");可是无论是在它cbElement.RaiseEvent("onchange"); 之前还是之后去禁用下拉列表都不起作用。我把这两句代码分别放到了两个button事件中去执行,先执行的onchange在执行的disabled,false就可以得到想要的效果。所以我以为是在这两句中间进行异步的等待Delay(10000)但也得不到button分离后实现的效果。

           private void Delay(int Millisecond) //延迟系统时间,但系统又能同时能执行其它任务;
            {           
                 DateTime current = DateTime.Now;            
                 while (current.AddMilliseconds(Millisecond) > DateTime.Now)            
                  {                
                       Application.DoEvents();//转让控制权            
                  }           
                   return;        
            }



    2012年8月20日 10:04
  • 直接

    cbElement.Enabled = false;

    不行吗?
    2012年8月21日 3:05
  • 不行啊,效果和 disabled一样。页面闪了一下。既没执行onchange也没禁用控件

                        HtmlDocument doc = webBrowser2.Document;
                        HtmlElement cbElement = doc.GetElementById("DDLGroup");
                        cbElement.SetAttribute("value", "2");
                        cbElement.RaiseEvent("onchange");
                        cbElement.SetAttribute("disabled", "false");

    2012年8月21日 3:27