.NET的偉大之處之一是它提供的與IE的無縫集成能力。例如,我們甚至能夠在用戶不知道的情況下從IE中激活一個Windows Forms控件。盡管利用了由.NET CLR提供的Code Access Security的所有功能,但這是在無需進行注冊的情況下完成的。
當開發(fā)Windows Forms控件時,我們就通過繼承的方式擁有了Windows Forms類所提供的所有功能。例如,我們可以使用Windows Forms控件驗證技術(shù)對用戶輸入的數(shù)據(jù)進行廣泛的驗證,同樣地,我們可以從窗體控件中調(diào)用遠程Web服務(wù)。通過使用所有這些技術(shù),我們就能夠使用.NET平臺開發(fā)豐富、功能強大的應(yīng)用程序。
實現(xiàn)
在這一部分,我們將學習如何創(chuàng)建簡單的Windows Forms控件并將它托管在IE中。下面是激活I(lǐng)E中Windows Forms控件的5個步驟:
·創(chuàng)建Windows Forms控件。
·創(chuàng)建包含標識Windows Forms控件的對象標志的HTML文檔。
·配置正確激活控件所需要的虛擬目錄。
·配置代碼訪問權(quán)限。
·運行該控件。
下面我們就來詳細地學習上面的每一個步驟。
創(chuàng)建Windows Forms控件
在這一步驟中,我們將創(chuàng)建一個簡單的Windows Forms控件,它向用戶顯示“Hello World”信息。如政略所示,我們將首先創(chuàng)建一個名為HelloWorldControl的新Visual C# Windows Control Library項目。
一旦創(chuàng)建項目后,我們將把缺省的用戶控件更名為HelloWorldCtl。我們將在用戶控件上添加一個名為lblMessage的標簽控件和一個名為btnClick的按鈕。當用戶點擊點擊按鈕時,程序就會執(zhí)行下面的代碼,向用戶顯示一個簡單的信息:
private void btnClick_Click(object sender, System.EventArgs e) { lblDisplayMessage.Text = "Hello World"; } |
既然已經(jīng)創(chuàng)建了控件,下面我們來編譯該項目,并創(chuàng)建可執(zhí)行代碼。
創(chuàng)建HTML網(wǎng)頁
在這一步驟中,我們將創(chuàng)建一個HTML文檔,并在其中插入用來激活Windows Forms控件的對象標志。HTML網(wǎng)頁如下:
<html> <body> <p>Hello World Control<br> <br></body> <object id="HelloWorldControl1"classid="http:HelloWorldControl.dll#HelloWorldControl.HelloWorldCtl" height="500" width="500" VIEWASTEXT> </object> <br><br> </html> |
在對象標志的classid屬性中,我們將路徑指定為控件庫組合體和控件的全名,控件的全名包括名字空間和控件類名字。從上面的代碼中可以看到,組合體和控件全名之間用#號隔開,這二個參數(shù)構(gòu)成了識別該控件的唯一控件標識符。由于是唯一地由名字HelloWorldControl1標識的,我們還可以針對該控件編寫客戶端腳本代碼。
配置虛擬目錄
創(chuàng)建HTML代碼后,我們就可以創(chuàng)建一個名為HelloWorldControlHost的新虛擬目錄,并在其中添加控件(HelloWorldControl.dll)和HTML文檔(HelloWorld.htm)。除了配置虛擬目錄外,將虛擬目錄的執(zhí)行權(quán)限設(shè)置為Scripts也是非常重要的。如果將其執(zhí)行權(quán)限設(shè)置為Scripts & Executables,控件就不會被正確地激活。通過打開虛擬目錄的Properties窗口,我們可以驗證虛擬目錄的權(quán)限。
配置代碼訪問權(quán)限
如果控件在企業(yè)內(nèi)部網(wǎng)上,它公正確地執(zhí)行,但如果要運行來自互聯(lián)網(wǎng)網(wǎng)站上的控件,就需要對IE進行配置或修改安全策略,使它能夠運行。通過將托管網(wǎng)頁看成是受信任區(qū)段的一部分,就能夠做到這一點。為了將你的站點設(shè)置為受信任區(qū)段的一部分,我們可以在IE中通過選擇“工具”->“選項”->“安全”->“受信任的站點”,然后將你的站點添加到列表中,再點擊“OK”按鈕。這樣下次再瀏覽到該網(wǎng)頁時,控件就會得到正確的執(zhí)行,因為已經(jīng)設(shè)置了互聯(lián)網(wǎng)許可。
運行控件
要運行控件,只要在瀏覽器中瀏覽托管該控件的HTML網(wǎng)頁即可。在顯示的HTML網(wǎng)頁中,如果點擊“Click Here”命令按鈕,控件就會如下圖所示顯示“Hello World”的消息。
在這個例子中,我們主要演習了如何創(chuàng)建簡單的Windows Forms控件,并在IE中托管它。