本篇文章是由《計算機工程與設計》發表的一篇電子論文,(月刊)創刊于1980年,由中國航天科工集團第二研究院706所主辦,是中國計算機學會會刊、北京計算機學會會刊和中國宇航學會會刊,是全國中文核心期刊、中國科技核心期刊。該刊是《中國科技引文數據庫》、《中國學術期刊綜合評價數據庫》、《中文科技期刊數據庫》來源期刊,是中國學術期刊文摘(中文版)、電子科技文獻數據庫、中文科技期刊數據庫收錄期刊,是中國科技論文統計與分析用刊,在“萬方數據-數字化期刊群”全文上網,并由《中國學術期刊(光盤版)》和《中國期刊網》全文收錄。
[摘 要] 針對B/S開發模式的流行和需求,利用C#開發窗體時,WebBowser控件的利用無疑是個不錯的選擇,WebBowser控件可以兼容目前大多數網絡資源的呈現和訪問,作為VS.net開發工具自身的控件,使用人員可以方便的應用。因此如何在窗體和WebBowser控件之間,進行數據傳遞,是很多開發人員必須面對的一個問題,本文從一個實例入手來分析建立數據傳遞的整個過程。
[關鍵詞] 窗體 WebBowser 事件
信息技術的不斷深入發展,推動了網絡技術的更新,各種新型的網絡應用呈現繁榮的狀態,人們開始更習慣利用網絡瀏覽器來完成各種工作,VS dot net開發工具中自帶了WebBowser控件,主要用于Windows環境下的網頁瀏覽用;用于窗體開發,可以利用網頁炫麗的圖片、文字、動畫以及JavaScript、Asp語言呈現的種種特效來美化窗體,這也是一些高端用戶經常要求;甚至利用這個控件可以開發其核心基于Internet Explorer(IE)的專業網絡瀏覽器。由于利用Linux其它操作系統的用戶畢竟是少數,因此開發基于Windows窗體環境的C/S、B/S應用架構滿足目前很多用戶提出的需求:可以定制所需要的網絡資源、數據對內透明、定制IE所需功能防止用戶其它操作等。所有開發的前提就是WebBrowser控件如何同Windows 窗體進行數據傳遞,需要那些事件來響應這些操作,下面,通過一個實例來研究數據傳值和事件響應的問題。
一、HTML語法研究
Hypertext Markup Language(HTML)是超文本標記語言,其目的在于運用標記(tag)使文件達到預期的顯示效果,目前已經發展到HTML 4.01版。隨后發展了XHTML語言,它比HTML的語法更加嚴格。
WebBrowser可以加載的*.htm、*.html和*.xhtml文件。這些網頁文件中的各元素都有自己獨有的標記方式。比如:
圖形標記:用以插入圖庫及設定圖形屬性。
連結標記:加入連結。
框架設定:用于設定網頁框架。
通過tag標記可以對網頁中各元素進行判斷,這就為網頁同窗體間的通信提供了一個非常好的通道。
二、WebBrowser控件[1]
WebBrowser是一個在.NET Framework 2.0版中新增的.的控件類。使用WebBrowser控件類使用戶可以在Windows窗體應用程序中導航網頁以及支持瀏覽器的其它文檔。例如可以使用WebBrowser控件在應用程序中提供基于HTML的集成用戶幫助或Web瀏覽功能。此外,還可以使用 WebBrowser控件向Windows窗體客戶端應用程序添加Web的現有控件。
WebBrowser控件在使用中由于加載頁面的內容量很大,會占用較大的系統資源,使用完該控件后一定要調用Dispose方法,以便確保及時釋放資源。而且必須在附加事件的同一線程上調用Dispose方法,該線程應始終是消息或用戶界面(UI)線程。
三、WebBrowser控件和窗體通信實例
下面,就通過一個實例來展示WebBrowser控件如何向窗體傳遞參數。
開發環境是Windows XP SP2,.NET Framework 3.5,Visual Studio.NET 2008。
1、打開Visual Studio.NET 2008,選擇使用C#語言開發,新建一個工程Webbrowserandform。
打開工具箱,選擇WebBrowser控件、contextMenuStrip控件放置到窗體。
在窗體的命名空間處添加:
using System.Threading;
“保存圖片”屬性Name:saveAsImageToolStripMenuItem;
“設置成桌面”屬性Name:setAsDesktopWallpaperToolStripMenuItem;
“打開”屬性Name:openToolStripMenuItem;
“刷新”屬性Name:refreshToolStripMenuItem。
2、在窗體Load事件中添加如下代碼
webBrowser1.Navigate("");
webBrowser1.ContextMenuStrip=contextMenuStrip1;
webBrowser1.IsWebBrowserContextMenuEnabled=false;
3、自定義鼠標右擊函數contextMenuStrip1_Opening()
private void contextMenuStrip1_Opening(object sender,CancelEventArgs e)
{
Point ScreenCoord=new Point(MousePosition.X, MousePosition.Y);
Point BrowserCoord=webBrowser1.PointToClient(ScreenCoord);
HtmlElement elem=webBrowser1.Document.GetElementFromPoint(BrowserCoord);
for(int i=0; i {
contextMenuStrip1.Items[i].Visible=false;
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >