IE中使用WinForm控制項

2021-08-29 19:43:32 字數 2377 閱讀 9891

使用該技術,需要客戶端安裝.net framework及ie 6.0,在windows 2003中已經自帶了.net framework。

嵌入webform的winfrom控制項利用公共語言執行庫**訪問安全性,一些特殊操作還需要設定訪問許可權。

下面就讓我們做個簡單的例子,在winform使用者控制項中使用gdi+實現畫線功能,並把它嵌入ie瀏覽器。

開發環境:windows 2000專業版、visualt studio .net 2002

1.建立winform使用者控制項

我們可以建立乙個「windows控制項庫」專案,最後嵌入瀏覽器時只需要生成的dll檔案。但為了方便除錯,我們可以先把控制項嵌入winform中。

新建「windows應用程式」,名稱為winforminwebform,生成的解決方案也名稱為winforminwebform。在解決方案中再新增乙個「windows控制項庫」專案winformcontrol,系統在該專案中自動新增乙個了usercontrol1的使用者控制項,刪除該控制項,然後在「windows控制項庫」專案中新增乙個使用者控制項winformgdictrl。

現在我們先把該控制項加如「windows應用程式」的form1中。

首先需要生成解決方案以生成控制項的dll檔案。然後開啟工具箱,點右鍵選擇「新增選項卡」,在工具箱中新增乙個「winform控制項」選項卡。在該選項卡上點右鍵,選擇「自定義工具箱」,彈出自定義工具箱頁面。切換到.net框架元件頁面,單擊瀏覽,到「\winformcontrol\bin\debug」目錄選擇winformcontrol.dll檔案,開啟後在「winform控制項」選項卡裡就會出現winformgdictrl控制項,這時就可以把該控制項拖動到form1上了。

開啟winformgdictrl.cs檔案,我們可以看到winformgdictrl類繼承自system.windows.forms.usercontrol。

由於我們要使用gdi+繪圖,為防止由控制項重繪引起的閃爍,我們可以啟用雙緩衝,指定控制項的controlstyles.doublebuffer為true。要完全啟用雙緩衝,必須也要將 userpaint 和 allpaintinginwmpaint位數設定為 true。在建構函式中加入

public winformgdictrl()

新增乙個類lineobj,用於儲存線物件,並給該類新增乙個draw方法用於畫線

using system;

using system.drawing;

namespace winformcontrol

public void draw(graphics g)}}

在winformgdictrl類中新增兩個類變數

private arraylist m_arraylines;

private bool m_bdrawing;

m_arraylines為線物件集合,m_bdrawing指示是否畫線。

並在類建構函式中初始化變數

m_arraylines=new arraylist();

m_bdrawing=false;

給控制項新增mousedown,mousemove,mouseup及paint事件響應函式

private void winformgdictrl_mousedown(object sender, system.windows.forms.mouseeventargs e)

private void winformgdictrl_mousemove(object sender, system.windows.forms.mouseeventargs e)

}private void winformgdictrl_mouseup(object sender, system.windows.forms.mouseeventargs e)

private void winformgdictrl_paint(object sender, system.windows.forms.painteventargs e)

}生成解決方案,執行form1,你就可以看到控制項的效果了

開啟\winformcontrol\bin\debug目錄,其中的winformcontrol.dll就是我們所需要的

2.把控制項嵌入ie瀏覽器

新建乙個虛擬目錄winformctrl,把winformcontrol.dll檔案複製進該目錄中,再在該目錄中建立乙個帶有object標記的html檔案test.htm

其中我們關心的是objcect標記的classid,classid分為兩部分:控制項名(可包括路徑)和控制項的完全限定名,中間用「#」相隔。完全限定名由「命名空間.類名」組成

從示例來看

winformcontrol.dll為控制項名,winformcontrol為控制項命名空間,winformgdictrl為控制項類名。

開啟ie,在位址列輸入http:\\localhost\winformctrl\test.htm,

Winform控制項在WPF中使用的注意事項

從winform轉到wpf的時候,經常需要在wpf裡面採用一些以前用winform寫過的控制項。下面介紹在wpf中使用winform的方法和注意事項。1 在wpf中使用winform的控制項 1 新增必須的dll。主要有 windowsformsintegration.dll,system.wind...

在Winform窗體中使用WPF控制項(附原始碼)

wpf控制項的漂亮是winform無法匹及的,本文主旨是在winform工程中如何使用wpf控制項。先看下效果,如下圖 左邊是傳統的winform控制項,右邊是debuglzq引入的wpf控制項,我們可以很清楚的看到的 半透明 效果 textbox的透明背景!介面很cool吧 下面就介紹下,這個創新...

在winform中使用 Membership

目的 在windows窗體應用程式中,用membership建立使用者 資料遷移程式,遷移使用者資料的時候用到,目前沒有發現更好的方法 問題 1.在新建的windows窗體應用程式中不能增加system.web.dll 在新增引用 net 視窗中找不到該dll 2.membership在winfor...