在IE中託管Windows Form

2022-08-31 15:09:20 字數 2064 閱讀 6625

.net的偉大之處之一是它提供的與ie的無縫整合能力。例如,我們甚至能夠在使用者不知道的情況下從ie中啟用乙個windows forms控制項。儘管利用了由.net clr提供的code access security的所有功能,但這是在無需進行註冊的情況下完成的。

當開發windows forms控制項時,我們就通過繼承的方式擁有了windows forms類所提供的所有功能。例如,我們可以使用windows forms控制項驗證技術對使用者輸入的資料進行廣泛的驗證,同樣地,我們可以從窗體控制項中呼叫遠端web服務。通過使用所有這些技術,我們就能夠使用.net平台開發豐富、功能強大的應用程式。

實現在這一部分,我們將學習如何建立簡單的windows forms控制項並將它託管在ie中。下面是啟用ie中windows forms控制項的5個步驟:

·建立windows forms控制項。

·建立包含標識windows forms控制項的物件標誌的html文件。

·配置正確啟用控制項所需要的虛擬目錄。

·配置**訪問許可權。

·執行該控制項。

下面我們就來詳細地學習上面的每乙個步驟。

建立windows forms控制項

在這一步驟中,我們將建立乙個簡單的windows forms控制項,它向使用者顯示「hello world」資訊。如政略所示,我們將首先建立乙個名為helloworldcontrol的新visual c# windows control library專案。

一旦建立專案後,我們將把預設的使用者控制項更名為helloworldctl。我們將在使用者控制項上新增乙個名為lblmessage的標籤控制項和乙個名為btnclick的按鈕。當使用者點選點選按鈕時,程式就會執行下面的**,向使用者顯示乙個簡單的資訊:

private void btnclick_click(object sender, system.eventargs e)

既然已經建立了控制項,下面我們來編譯該專案,並建立可執行**。

建立html網頁

在這一步驟中,我們將建立乙個html文件,並在其中插入用來啟用windows forms控制項的物件標誌。html網頁如下:

在物件標誌的classid屬性中,我們將路徑指定為控制項庫組合體和控制項的全名,控制項的全名包括名字空間和控制項類名字。從上面的**中可以看到,組合體和控制項全名之間用#號隔開,這二個引數構成了識別該控制項的唯一控制項識別符號。由於是唯一地由名字helloworldcontrol1標識的,我們還可以針對該控制項編寫客戶端指令碼**。

配置虛擬目錄

建立html**後,我們就可以建立乙個名為helloworldcontrolhost的新虛擬目錄,並在其中新增控制項(helloworldcontrol.dll)和html文件(helloworld.htm)。除了配置虛擬目錄外,將虛擬目錄的執行許可權設定為scripts也是非常重要的。如果將其執行許可權設定為scripts & executables,控制項就不會被正確地啟用。通過開啟虛擬目錄的properties視窗,我們可以驗證虛擬目錄的許可權。

配置**訪問許可權

如果控制項在企業內部網上,它公正確地執行,但如果要執行來自網際網路**上的控制項,就需要對ie進行配置或修改安全策略,使它能夠執行。通過將託管網頁看成是受信任區段的一部分,就能夠做到這一點。為了將你的站點設定為受信任區段的一部分,我們可以在ie中通過選擇「工具」->「選項」->「安全」->「受信任的站點」,然後將你的站點新增到列表中,再點選「ok」按鈕。這樣下次再瀏覽到該網頁時,控制項就會得到正確的執行,因為已經設定了網際網路許可。

執行控制項

要執行控制項,只要在瀏覽器中瀏覽託管該控制項的html網頁即可。在顯示的html網頁中,如果點選「click here」命令按鈕,控制項就會如下圖所示顯示「hello world」的訊息。

在非託管環境中呼叫託管物件

如果要在mfc專案中支援託管擴充套件,可以使mfc工程通過開啟專案的託管擴充套件屬性開關。在開啟託管擴充套件編譯開關以後,你就可以在mfc專案中使用託管物件了,通常的做法是 為每個重要的mfc物件匹配乙個託管物件以形成乙個對偶對,彼此匹配的物件包含指向對方的指標,這樣,其他.net物件可以通過對偶對...

在Gitee中託管專案

1 檢查當前檔案狀態 git status 作用 顯示倉庫的全部檔案 2 把工作區的檔案提交到暫存區 git add 更新全部 git add 更新指定檔案 git add file 或者選擇git checkout file file 表示需要跟新的檔名 3 提交專案,新增更新說明 git com...

在VC中呼叫 WebService 非託管

一 使用visual studio.net呼叫webservice 很多次看到討論vc中呼叫webservice的問題,其實在visual studio.net 下稱vs.net 及其以後的版本中呼叫webservice已經變得相當簡單。你所要做的只是 找到 webservice的發布位址 然後將其...