我没学过C#,之前只学过一点Java,最近想编个网页自动注册的程序,遇到的问题如下:我想建三个webbrowser对象,访问三个网页,但是发生这一事件处理的方法我采用同一个wb_DocumentComplete方法
然后都用wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);我会在wb_DocumentCompleted方法中,通过引发对象的不同,针对不同的引发对象进行不同的处理。问题是 我怎么在发生documentComplete这一事件时,知道是哪个webbrowser引发了这一事件呢?

解决方案 »

  1.   

    public delegate void WebBrowserDocumentCompletedEventHandler(
        Object sender,
        WebBrowserDocumentCompletedEventArgs e
    )sender啊
      

  2.   

    我没学过C#,之前只学过一点Java,最近想编个网页自动注册的程序,遇到的问题如下:我想建三个webbrowser对象,访问三个网页,三个不同的webbroser通过wb传递,但是发生这一事件处理的方法我采用同一个wb_DocumentComplete方法
    public void mailReg(WebBrowser wb,ref Boolean bl)
            {
                intLoadingIndex = 0;
                if (wb.Name == webBrowser1.Name) bl = blCanStart1;
                if (wb.Name == webBrowser2.Name) bl = blCanStart2;
                if (wb.Name == webBrowser3.Name) bl = blCanStart3;
                if (wb.Name == webBrowser4.Name) bl = blCanStart4;
                if (bl == true)
                {
                    wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
                    wb.ScriptErrorsSuppressed = true;
                    wb.Navigate(strRegurl);
                    bl = false;
                }
                else return;
            }我会在wb_DocumentCompleted方法中,通过引发对象的不同,针对不同的引发对象进行不同的处理。问题是 我怎么在发生documentComplete这一事件时,知道是哪个webbrowser引发了这一事件呢?
      

  3.   

    private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                if (sender.ToString() == webBrowser1.Name) lbxReg.Items.Add(sender.ToString()); else lbxReg.Items.Add(webBrowser1.ReadyState);

    我这里输出的sender是空的,这边我应该用public delegate void 而不是private void 吗?
      

  4.   


    // <summary>
            /// 浏览器加载完毕
            /// </summary>
            /// <param name="_webBrowser"></param>
            public void webBrowserComplete(WebBrowser _webBrowser)
            {
                while (_webBrowser.ReadyState != WebBrowserReadyState.Complete)
                {
                    Application.DoEvents();
                    System.Threading.Thread.Sleep(100);
                }
            }
      

  5.   

    恩恩 我就是要这个sender 我怎么能在DocumentComplete(object sender, WebBrowserDocumentCompletedEventArgs e)这个方法里 获得webbowser的名字呢?问的很外行话,请别介意呵呵。
      

  6.   

    呵呵 搞定了!
    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                WebBrowser wbSender= sender as WebBrowser;
                if (wbSender.Name == webBrowser1.Name) tbxDebug.Text = "True"; else tbxDebug.Text = "False";//输出True.
             }
    多谢二楼的提醒!