亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

c#winform使用WebBrowser 大全[超長文轉載]

2019-11-17 02:56:43
字體:
來源:轉載
供稿:網友
c#winform使用WebBrowser 大全[超長文轉載]

1、主要用途:使用戶可以在窗體中導航網頁。

2、注意:WebBrowser控件會占用大量資源。使用完該控件后一定要調用Dispose方法,以便確保及時釋放所有資源。必須在附加事件的同一線程上調用Dispose方法,該線程應始終是消息或用戶界面(UI)線程。

3、WebBrowser使用下面的成員可以將控件導航到特定URL、在導航歷史記錄列表中向后和向前移動,還可以加載當前用戶的主頁和搜索頁:

1.URL屬性:可讀、可寫,用于獲取或設置當前文檔的URL?!?/p>

WebBrowser控件維護瀏覽會話期間訪問的所有網頁的歷史記錄列表。設置Url屬性時,WebBrowser控件導航到指定的URL并將該URL添加到歷史記錄列表的末尾。

WebBrowser控件在本地硬盤的緩存中存儲最近訪問過的站點的網頁。每個頁面都可以指定一個到期日期,指示頁面在緩存中保留的時間。當控件定位到某頁時,如果該頁具有緩存的版本,則直接顯示緩存中的內容而不必重新下載該頁,從而節省了時間。使用Refresh方法強制WebBrowser控件通過下載來重新加載當前頁,從而確??丶@示最新版本。

注意:即使已請求了另一個文檔,該屬性也包含當前文檔的URL。如果設置該屬性的值,然后立即再次檢索該值,要是WebBrowser控件尚未來得及加載新文檔,則檢索到的值可能與設置的值不同。

2.Navigate方法:將指定位置的文檔加載到WebBrowser控件中。

3.GoBack方法:如果導航歷史記錄中的上一頁可用,則將WebBrowser控件導航到該頁。

如果導航成功,則返回true;如果導航歷史記錄中的上一頁不可用,則返回false。

WebBrowser控件維護瀏覽會話期間訪問的所有網頁的歷史記錄列表??梢允褂肎oForward方法實現一個“后退”按鈕。

使用CanGoBack屬性確定導航歷史記錄是否可用以及是否包含上一頁。處理CanGoBackChanged事件,在CanGoBack屬性值更改時接收通知。

4.GoForward方法:如果導航歷史記錄中的下一頁可用,則將WebBrowser控件導航到該頁。

如果導航成功,則返回true;如果導航歷史記錄中的下一頁不可用,則返回false。

WebBrowser控件維護瀏覽會話期間訪問的所有網頁的歷史記錄列表。可以使用GoForward方法實現一個“前進”按鈕.

使用CanGoForward屬性確定導航歷史記錄是否可用以及是否包含當前頁之后的頁。處理CanGoForwardChanged事件,在CanGoForward屬性值更改時接收通知

  5.GoHome方法:將WebBrowser控件導航到當前用戶的主頁。

  6.GoSearch方法:將WebBrowser控件導航到當前用戶的默認搜索頁。

    默認搜索頁存儲在注冊表的HKEY_CURRENT_USER/Software/Microsoft/InternetExplorer/Main/SearchPage注冊表項下。

    若要使用其他搜索頁而不是默認搜索頁,請調用Navigate方法或指定Url屬性。

  7.Refresh方法:重新加載當前顯示在WebBrowser控件中的文檔。

  8.Stop方法:取消所有掛起的導航并停止所有動態頁元素(如背景聲音和動畫)。

如果導航不成功,則顯示一頁指示出現的問題。使用這些成員中的任何一個進行導航都會導致在導航的不同階段發生Navigating、Navigated和DocumentCompleted事件。

4、ObjectForScripting屬性:獲取或設置一個對象,該對象可由顯示在WebBrowser控件中的網頁所包含的腳本代碼訪問。

使用該屬性啟用WebBrowser控件承載的網頁與包含WebBrowser控件的應用程序之間的通信。使用該屬性可以將動態HTML(DHTML)代碼與客戶端應用程序代碼集成在一起。為該屬性指定的對象可作為window.external對象(用于主機訪問的內置DOM對象)用于網頁腳本。

可以將此屬性設置為希望其公共屬性和方法可用于腳本代碼的任何COM可見的對象??梢酝ㄟ^使用ComVisibleAttribute對類進行標記使其成為COM可見的類。

若要從客戶端應用程序代碼調用網頁中定義的函數,請使用可從Document屬性檢索的HtmlDocument對象的HtmlDocument.InvokeScript方法。

5、AllowNavigation屬性:獲取或設置一個值,該值指示控件在加載其初始頁之后是否可以導航到其他頁。

6、AllowWebBrowserDrop屬性:獲取或設置一個值,該值指示WebBrowser控件是否導航到拖放到它上面的文檔。

7、WebBrowserShortcutsEnabled屬性:是否啟用WebBrowser自帶的快捷鍵。

8、ScriptErrorssupPRessed屬性:獲取或設置一個值,該值指示出現腳本錯誤時,WebBrowser控件是否顯示錯誤對話框。

9、IsWebBrowserContextMenuEnabled屬性:是否啟用右鍵菜單。

源:MSDNhttp://msdn.microsoft.com/zh-cn/library/system.windows.forms.webbrowser(v=vs.80).aspx

C#WinFormWebBrowser(二)實用方法總結

實用方法1:獲取狀態欄信息

voidwebBrowser1_StatusTextChanged(objectsender,EventArgse) { label1.Text=webBrowser1.StatusText; }

實用方法2:頁面跳轉后改變地址欄地址

//在Navigated事件處理函數中改變地址欄地址是最恰當的: privatevoidwebBrowser1_Navigated(objectsender,WebBrowserNavigatedEventArgse) { textBox1.Text=webBrowser1.Url.ToString(); }

實用方法3:設置單選框

//建議使用執行單擊事件的方式來設置單選框,而不是修改屬性: webBrowser1.Document.GetElementById("RBT_A").InvokeMember("click");

實用方法4:設置聯動型下拉列表

//比較常見的聯動型多級下拉列表就是省/市縣選擇了,這種情況下直接設置選擇項的屬性不會觸發聯動,需要在最后執行觸發事件函數才能正常工作:foreach(HtmlElementfins.GetElementsByTagName("option")) { if(f.InnerText=="北京") { f.SetAttribute("selected","selected"); } else { f.SetAttribute("selected",""); } } s.RaiseEvent("onchange");

以上四種方法轉于:http://www.49028c.com/SkyD/archive/2009/04/23/1441696.html

實用方法一:在WinForm中相應Web事件 假設HTML源代碼如下:

<html> <body> <inputtype="button"id="btnClose"value="關閉"/> </body> </html>

HtmlDocumenthtmlDoc=webBrowser.Document; HtmlElementbtnElement=htmlDoc.All["btnClose"]; if(btnElement!=null) { btnElement.click+=newHtmlElementEventHandler(HtmlBtnClose_Click); }

//很簡單吧?那么稍稍高級一點的——我們都知道一個HTML元素可能有很多各種各樣的事件,而HtmlElement這個類只給出最常用、共通的幾個。那么,如何響應其他事件呢?這也很簡單,只需要調用HtmlElement的AttachEventHandler就可以了:

btnElement.AttachEventHandler("onclick",newEventHandler(HtmlBtnClose_Click)); //這一句等價于上面的btnElement.click+=newHtmlElementEventHandler(HtmlBtnClose_Click);

對于其他事件,把"onclick"換成該事件的名字就可以了。例如:

formElement.AttachEventHandler("onsubmit",newEventHandler(HtmlForm_Submit));

實用方法二:模擬表單自動填寫和提交

假設有一個最簡單的登錄頁面,輸入用戶名密碼,點“登錄”按鈕即可登錄。已知用戶名輸入框的id(或Name,下同)是username,密碼輸入框的id是passWord,“登錄”按鈕的id是submitbutton,那么我們只需要在webBrowser的DocumentCompleted事件中使用下面的代碼即可:

HtmlElementbtnSubmit=webBrowser.Document.All["submitbutton"]; HtmlElementtbUserid=webBrowser.Document.All["username"]; HtmlElementtbPasswd=webBrowser.Document.All["password"];if(tbUserid==null||tbPasswd==null||btnSubmit==null) return;tbUserid.SetAttribute("value","smalldust"); tbPasswd.SetAttribute("value","12345678");btnSubmit.InvokeMember("click");

關于表單的提交,的確還有另一種方法就是獲取form元素而不是button,并用form元素的submit方法:

HtmlElementformLogin=webBrowser.Document.Forms["loginForm"]; //…… formLogin.InvokeMember("submit");

本文之所以沒有推薦這種方法,是因為現在的網頁,很多都在submit按鈕上添加onclick事件,以對提交的內容做最基本的驗證。如果直接使用form的submit方法,這些驗證代碼就得不到執行,有可能會引起錯誤。

實用方法三:調用腳本

首先是調用Web頁面的腳本中已經定義好的函數。假設HTML中有如下javascript:

functionDoAdd(a,b){ returna+b; }

那么,我們要在WinForm調用它,只需如下代碼即可:

objectoSum=webBrowser.Document.InvokeScript("DoAdd",newobject[]{1,2}); intsum=Convert.ToInt32(oSum);

其次,如果我們想執行一段Web頁面中原本沒有的腳本,該怎么做呢?這次.Net的類沒有提供,看來還要依靠COM了。IHTMLWindow2可以將任意的字符串作為腳本代碼來執行。

stringscriptline01=@"functionShowPageInfo(){"; stringscriptline02=@"varnumLinks=document.links.length;"; stringscriptline03=@"varnumForms=document.forms.length;"; stringscriptline04=@"varnumImages=document.images.length;"; stringscriptline05=@"varnumScripts=document.scripts.length;"; stringscriptline06=@"alert('網頁的統計結果:/r/n鏈接數:'+numLinks+"; stringscriptline07=@"'/r/n表單數:'+numForms+"; stringscriptline08=@"'/r/n圖像數:'+numImages+"; stringscriptline09=@"'/r/n腳本數:'+numScripts);}"; stringscriptline10=@"ShowPageInfo();";stringstrScript=scriptline01+scriptline02+scriptline03+scriptline04+scriptline05+ scriptline06+scriptline07+scriptline08+scriptline09+scriptline10;IHTMLWindow2win=(IHTMLWindow2)webBrowser.Document.Window.DomWindow; win.execScript(strScript,"Javascript");

以上三種實用方法轉于:http://www.49028c.com/smalldust/archive/2006/03/08/345561.html

最后:在腳本中調用WinForm里的代碼,這個可能嗎?呵呵,當然是可能的。 下面的代碼示例演示如何使用ObjectForScripting屬性。在該示例中,ObjectForScripting屬性被設置為當前窗體。

viewsourceprint?

usingSystem;

usingSystem.Windows.Forms;

usingSystem.Security.Permissions;

[PermissionSet(SecurityAction.Demand,Name="FullTrust")]

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

publicclassForm1:Form

{

privateWebBrowserwebBrowser1=newWebBrowser();

privateButtonbutton1=newButton();

[STAThread]

publicstaticvoidMain()

{

application.EnableVisualStyles();

Application.Run(newForm1());

}

publicForm1()

{

button1.Text="callscriptcodefr

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美国产视频| 国产精品视频色| 久久久久久久久久久久久久久久久久av| 成人免费看黄网站| 日韩欧美成人精品| 亚洲人成电影网站色| 久久久最新网址| 国产精品爽黄69天堂a| 欧美激情一级二级| 亚洲一区美女视频在线观看免费| 成人中心免费视频| 欧美做受高潮电影o| 国产97免费视| 亚洲欧洲偷拍精品| 欧美性猛交xxxx黑人猛交| 欧美美最猛性xxxxxx| 韩国福利视频一区| 好吊成人免视频| 久久在线免费视频| 高清一区二区三区四区五区| 国产精品成人免费视频| 亚洲男人天堂2019| 不卡在线观看电视剧完整版| 亚洲第一偷拍网| 国产精品美腿一区在线看| 欧美性受xxx| 最近2019中文字幕大全第二页| 亚洲free嫩bbb| 欧美在线观看视频| 欧美制服第一页| 欧美精品在线免费| 精品国产乱码久久久久久婷婷| 国产精品久久久一区| 国产有码在线一区二区视频| 精品国产区一区二区三区在线观看| 亚洲第一天堂无码专区| 国产精品丝袜久久久久久不卡| 欧美日韩国产精品一区二区三区四区| 亚洲精品视频免费| 91久久在线观看| 欧美激情精品久久久久久黑人| 国产精品人人做人人爽| 日韩免费在线电影| 38少妇精品导航| 热99精品里视频精品| 国产精品人成电影| 日韩欧美在线字幕| 亚洲视频自拍偷拍| 日韩午夜在线视频| 国产精品99久久久久久白浆小说| 久久久久国产精品免费网站| 日韩在线观看视频免费| 亚洲xxxxx电影| 国产精品色悠悠| 亚洲国产成人精品久久| 日韩av在线网站| 91精品在线一区| 久久精品视频中文字幕| 欧美激情亚洲另类| 久久久久久这里只有精品| 欧美成人午夜激情视频| 成人在线免费观看视视频| 国产精品一二三在线| 亚洲毛茸茸少妇高潮呻吟| 色综合久综合久久综合久鬼88| 国产精品视频网| 91精品久久久久久| 欧美成人高清视频| 欧美另类暴力丝袜| 国产中文字幕日韩| 伊人伊成久久人综合网站| 中文字幕精品久久久久| 欧美电影在线观看网站| 亚洲第一色中文字幕| 国产98色在线| 日韩有码在线观看| 久久精品国产一区二区三区| 国产精品扒开腿做爽爽爽的视频| 欧美大片在线看| 成人国产精品久久久久久亚洲| 亚洲天堂免费视频| 免费99精品国产自在在线| 欧美视频在线免费看| 国产精品视频999| 国产亚洲视频在线| 日韩久久精品成人| 欧美在线视频一区| 欧美一级免费看| 欧美日韩国产中文精品字幕自在自线| 成人一区二区电影| 性欧美长视频免费观看不卡| 欧美国产精品人人做人人爱| 欧美亚洲视频在线观看| 97国产成人精品视频| 欧美猛交ⅹxxx乱大交视频| 一区二区三区视频观看| 欧美亚洲在线视频| 性色av一区二区三区免费| 中文字幕亚洲欧美日韩高清| 91免费看片在线| 国产精品一区二区三区免费视频| 亚洲视频日韩精品| 久久久久久久影院| 日韩一区二区三区国产| 一区二区三区美女xx视频| 国产精品永久免费视频| 日本精品va在线观看| 日本电影亚洲天堂| 久久久精品一区二区三区| 国产在线观看精品一区二区三区| 日韩高清电影好看的电视剧电影| 久久久久久久久亚洲| 久久精品国产清自在天天线| 欧美裸身视频免费观看| 岛国av一区二区三区| 亚洲a在线观看| 最近的2019中文字幕免费一页| 超碰97人人做人人爱少妇| 欧美极品少妇xxxxx| 2025国产精品视频| 亚洲国产精品久久久久秋霞不卡| 久久久精品网站| 97人人做人人爱| 国产精品热视频| 欧美大片大片在线播放| 亚洲精品国产福利| 91免费视频网站| 91高清视频在线免费观看| 在线观看日韩av| 欧美成人一二三| 亚洲专区国产精品| 中文字幕日韩精品在线观看| 性欧美长视频免费观看不卡| 国产一区二区三区四区福利| 久久久国产精彩视频美女艺术照福利| 欧美成在线视频| 久久久国产视频| 中文字幕日韩在线视频| 91精品视频专区| 91免费视频网站| 国产精品免费看久久久香蕉| 亚洲bt天天射| 青草热久免费精品视频| 91精品国产综合久久久久久久久| 黑人与娇小精品av专区| 国产精品福利观看| 亚洲欧洲在线观看| 亚洲精品电影网在线观看| 久久久精品网站| 尤物精品国产第一福利三区| 国产亚洲一区二区在线| 日本亚洲欧洲色α| 欧美视频专区一二在线观看| 国产精品久久久久久久久久小说| www.久久久久| 在线视频国产日韩| 日韩欧美在线视频日韩欧美在线视频| 欧美成人精品xxx| 亚洲国产中文字幕久久网| 亚洲影院色在线观看免费| 亚洲综合av影视| 国产自摸综合网| 欧美激情国内偷拍| 久久久久久久久电影|