在IE瀏覽器中使用Windows窗體控件(一)
2024-07-21 02:16:23
供稿:網友
 
中國最大的web開發資源網站及技術社區,
在ie瀏覽器中使用windows窗體控件(一)
作者::thiru thangarathinam
翻譯:秋楓 
引言
在過去,web程序員經常在他們的web程序中使用activex控件來實現一些胖客戶端才具有的功能。不過現在開發者可以很容易的通過microsoft.net framework來簡潔和安全的建立對象,并且方便的在ie瀏覽器中切入使用。通過在ie瀏覽器中創建windows窗體控件,開發者可以實現豐富的web客戶端。在這篇文章中,我們將會知道怎樣創建windows窗體控件并且在ie中使用。在瀏覽器中使用窗體控件過程中,我們會演示怎樣通過窗體控件來提供豐富的web客戶端顯示,而窗體控件用來調用遠程web service獲取數據。與此同時,我們也會知道怎樣利用.net安全模型來為我們的窗體控件提供一個安全的運行環境。
如果你有過用java開發web程序的經驗,那你會很熟悉java applets。它是一個運行在瀏覽器中的一個小程序。當瀏覽器打開包含有applet 標簽的html文檔時,java applets就會運行。windows窗體在web頁里的工作方式同java applets很相似。在這個實現中,你創建窗體控件,并為他加上豐富的windows窗體控件樣式,接著切入到web頁面中。在瀏覽器加載該web頁面的時候,windows控件所包含的代碼也會被執行。在局域網或者擴展的網絡程序中這個將會是很有用的。比如想開發一個企業使用的具有胖客戶端特性的基與web的程序。
.net的一個重要特征就是跟ie緊密結合。比如,我們可以在ie中使用windows窗體控件,而不需要通知用戶需要加另外的東西。這個不需要注冊什么.net clr就會提供代碼安全訪問的能力。
當你創建windows窗體控件,你會有窗體類層次提供的特征。比如,你可以使用windows窗體控件驗證技術來驗證輸入數據的準確性。同樣的,你甚至可以在你的窗體控件中調用web service。通過這些技術使用,你可以創建基與.net平臺的豐富的、健壯的、動態應用程序。
 
備注:按照原文重寫了代碼,把載圖替換成了中文,運行環境:操作系統windows2003,.net framework 1.1.這里講幾點:調試過程中打開瀏覽器輸入完整地址。如果以文件方式打開將不會顯示窗體控件;另外對于進程的調試,可以是單個源文件。不過我運行的是debug版本下生成的組件,不是release的,有興趣讀者可以試試。
 
執行
在這節,我們就會明白怎樣創建windows窗體控件并在ie中使用。下面列出了五個步驟來完成這一過程。
 1.創建windows窗體控件
 2.創建一個帶有object 標簽的html文檔,該標簽用來標識windows控件
 3.配置控件的虛擬路徑
 4.設置代碼訪問權限
 5.運行控件
接下來讓我們來看看上面的各個步驟。
1.創建一個windows窗體控件
在這一步中,我們創建一個簡單的windows窗體控件。控件實現的功能是顯示”hello world”給用戶。我們先來建立一個windows 控件庫項目取名為helloworldcontrol,修改默認的用戶控件為helloworldctl。接著在控件中加入一個label,取名為lbldisplaymessage,同時增加了一個按鈕btnclick。當用戶點擊按鈕時,將會執行下面的代碼用來顯示消息給用戶。
private void btnclick_click(object sender, system.eventargs e)
{
 this.lbldisplaymessage.text = "hello world";
}
接著就是編譯他生成一個assembly。
2.創建html頁
在這一步中,我們將創建一個html文檔并在里面插入object標簽。整個文檔看起來如下:
<html>
 <body>
 <p>hello world control
 <object id="helloworldcontrol1" height="300" width="300" classid="http:helloworldcontrol.dll#helloworldcontrol.helloworldctl"
 viewastext>
 </object>
 <br>
 </p>
 </body>
</html>
在這個標簽的classid 屬性中,我們指定第一步創建的那個組件的路徑以及組件完整限定名。整個完整名稱包括命名空間和整個類名。我們可以在上面的代碼中清楚的看到組件名和限定名用#分割。這兩部分參數組合在一起用來標識控件的唯一性。當然可以通過取名唯一id為helloworldcontrol1來編寫客戶端腳本。
3.配置虛擬路徑
有了html頁面,現在來建立一個helloworldcontrolhost的虛擬目錄,實際目錄在d:/my programs/hellpworldhost,該目錄包含了helloworldcontrol.dll和hellpworld.htm文件。當設置虛擬目錄的時候,需要注意的是設置執行權限為“純腳本”。如果設置成“腳本和可執行腳本”的權限。那控件可能不會正常工作(我在iis6下設置成“腳本和可執行腳本”,不正常)。你可以打開虛擬目錄的屬性來確認設置,設置窗口如下:
4.設置代碼訪問權限
如果這個web在局域網中訪問,他會正常工作。如果該web是通過internet來訪問,那你需要設置internet explorer,修改安全屬性以允許他運行。你可以把主頁加入到受信任的站點。如果需要設置可以通過ie的工具菜單―>internet選項->安全->受信任的站點,點擊上面的站點按鈕把你的網站加入其中。接下去,當你打開瀏覽器查看,就會看到正確執行。
5.運行控件
要運行這個控件,我們在瀏覽器中查看包含了控件的那個html頁面。假如你在頁面上點擊這個按鈕,那么控件就會顯示“hellp world”信息,執行頁面如下:
在這個例子中,我們實現了怎樣創建件一個windows窗體控件然后在ie瀏覽器中顯示。在下一節中我們來實現在客戶端瀏覽器上通過窗體控件來訪問web service。