c#中WebBrowser控件 .

来源:互联网 发布:左红军网络计划 编辑:程序博客网 时间:2024/05/04 02:15

最近用到WebBrowser控件,遇到很多问题,也学习了不少新的东西。下面是我在C#下写的关于WebBrowser控件使用的代码。

1WebBrowser常用属性

.Refresh();//刷新

.GoBack();//后退

.GoForward();//前进

.Navigate(new Uri(address)); //打开链接

.Dock = DockStyle.Fill; //完全停靠在父容器中

.ScriptErrorsSuppressed = true ; //关闭错误显示

Uri a = new Uri(WebBrowser.Document.ActiveElement.GetAttribute("href"));//获取点击中的链接地址

2WebBrowser常用事件处理

.Navigated += new WebBrowserNavigatedEventHandler(WebBrowser_Navigated);//加载中处理事件

.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser _DocumentCompleted);//页面加载完成处理事件

.NewWindow += new CancelEventHandler(WebBrowser _NewWindow);//新的窗口中打开页面

3、事件处理函数

3.1、打开新连接

[c-sharp] view plaincopyprint?
  1. // Navigates to the given URL if it is valid.  
  2.   
  3. private void Navigate(WebBrowser web,String address)  
  4.   
  5. {  
  6.   
  7.     if (String.IsNullOrEmpty(address)) return;  
  8.   
  9.     if (address.Equals("about:blank")) return;  
  10.   
  11.     if (!address.StartsWith("http://")) address = "http://" + address;  
  12.   
  13.     try  
  14.   
  15.     {  
  16.   
  17.         WebBrowser.Navigate(new Uri(address));  
  18.   
  19.          
  20.   
  21.     }  
  22.   
  23.     catch (System.UriFormatException)  
  24.   
  25.     {  
  26.   
  27.         return;  
  28.   
  29.     }  
  30.   
  31.     // Updates the URL in TextBoxAddress upon navigation.  
  32.   
  33.     private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)  
  34.   
  35.    {  
  36.   
  37.       toolStripTextBox1.Text = WebBrowser.Url.ToString();  
  38.   
  39.    }  
  40.   
  41. }  
  

3.2、新窗口处理

      

[c-sharp] view plaincopyprint?
  1. private void WebBrowser_NewWindow(object sender, CancelEventArgs e)  
  2.   
  3.       {  
  4.   
  5.           WebBrowser webb = new WebBrowser();  
  6.   
  7.           
  8.   
  9.           WebBrowser = WebBrowsers[webtab.SelectedIndex];  
  10.   
  11.           webb.Name = "webb" + webtab.TabCount;  
  12.   
  13.           Uri a = new Uri(WebBrowser.Document.ActiveElement.GetAttribute("href"));          
  14.   
  15.           webb.Url = a;  
  16.   
  17.           webb.Dock = DockStyle.Fill;  
  18.   
  19.           TabPage p = new TabPage();             
  20.   
  21.           p.Controls.Add(webb);  
  22.   
  23.           webtab.TabPages.Add(p);  
  24.   
  25.           webtab.SelectedTab = p;  
  26.   
  27.           webb.NewWindow += new CancelEventHandler(WebBrowser_NewWindow);  
  28.   
  29.            
  30.   
  31.           e.Cancel = true;//取消在默认浏览器中打开          
  32.   
  33.       }  

3.3、用户自动登陆处理

[c-sharp] view plaincopyprint?
  1. #region 用户自动登陆   
  2.   
  3. private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)  
  4.   
  5. {  
  6.   
  7.       HtmlDocument log_auto = WebBrowser.Document;  
  8.   
  9.       HtmlElement log_btn = null;  
  10.   
  11.    
  12.   
  13.        foreach (HtmlElement em in log_auto.All) //轮循  
  14.   
  15.        {  
  16.   
  17.              string str = em.Name;  
  18.   
  19.              string id = em.Id;  
  20.   
  21.              if ((str == "username") || (str == "password") || (str == "submit")) //减少处理  
  22.   
  23.              {  
  24.   
  25.                     switch (str)  
  26.   
  27.                     {  
  28.   
  29.                         case "username": em.SetAttribute("value", usernamexml);  
  30.   
  31.                             break//赋用户名  
  32.   
  33.                         case "password": em.SetAttribute("value", userpasswordxml );  
  34.   
  35.                             break//赋密码  
  36.   
  37.                         case "submit": log_btn = em;  
  38.   
  39.                             break//获取submit按钮  
  40.   
  41.                         default:  
  42.   
  43.                             break;  
  44.   
  45.                     }  
  46.   
  47.                 }  
  48.   
  49.    
  50.   
  51.             }  
  52.   
  53.             log_btn.InvokeMember("click"); //触发submit事件                  
  54.   
  55.         }  
  56.  
  57. #endregion  

原创粉丝点击