C OCX控制項之開發

2021-04-24 21:45:16 字數 1986 閱讀 4215

在c#中,其實沒有ocx控制項一說,相對應的只是com元件,編譯後也是.dll,而不是.ocx.所以在c#中,在建立專案時只能建立類庫專案。

然後就是具體的**開發。(略)

要使元件成為能被網頁指令碼呼叫的ocx控制項,在開發時,要注意以下幾點:

1、必須要為將發布ocx控制項的主類設定guid碼。該碼在建立類庫時,c#會自動生成乙個(你可以使用,也可以重新生成),並儲存在assemblyinfo.cs中。設定guid的**參照以下:

namespace ***x

}  

2、必須要實現iobjectsafety介面。該介面需要手工建立乙個介面類並讓ocx元件實現。

完整的介面**:(以下介面**都是固定的,最好不要做其他改動)

using system;

using system.collections.generic;

using system.text;

using system.web.ui.webcontrols.webparts; //必須引用該包

using system.security;

using system.runtime.interopservices;     //必須引用該包

namespace rundata }

介面實現:

public void getinte***ccesafyoptions(system.int32 riid,out system.int32 pdwsupportedoptions,out system.int32 pdwenabledoptions)

public  void setinte***cesafetyoptions(system.int32 riid,system.int32 dwoptionssetmask,system.int32 dwenabledoptions)

3、對assemblyinfo.cs進行編輯,修改相應的屬性。包括以下屬性及值:

// 則將該型別上的 comvisible 屬性設定為 true。

[assembly: comvisible(true)] //將false更改為true,自動生成的注釋也做了說明

//新新增下面的屬性。該屬性要求引用system.security

[assembly: allowpartiallytrustedcallers()]

// 如果此專案向 com 公開,則下列 guid 用於型別庫的 id

//[assembly: guid("80c07fca-841c-43c9-bd34-e9f3a6e87a85")]  //注釋掉該屬性,此屬性必須注釋,最初我沒有注釋此屬性,生成com元件老是不成功,有警告,會影響最後的發布.試了n次才試出原因是沒有注釋此屬性。

要引用:using system.runtime.interopservices;

4、編輯工程屬性。

a、在[應用程式]頁,輸出型別必須指定為「類庫」.

b、在[生成]頁,必須勾選「為com interop註冊」選項。

作了以上修改,如果能編譯成功,則表示你的com元件已夠在你本機發布成功了。也說明你的元件本身沒什麼問題了。

你可以寫乙個測試網頁對你的com元件進行引用了。

如果是iis,可以直接使用dll引用方式進行引用,格式:

也可以使用clsid方式引用。

如果非iis應用伺服器,如tomcat等,則只能使用clsid方式。格式:

"8d7d8518-ca58-4863-b94d-3c616fda7b35"就是最開始提到的那個guid碼!

在本機上執行此網頁應該不會出現問題了,因為在開發元件的過程中vs.net會自動進行元件註冊。

使用ole檢視器可以檢視當前元件是否成功註冊到本機,如果沒有找到該元件,應該使用手工註冊方式進行註冊。

通常情況下手工註冊ocx都是採用regsvr32.exe,但註冊c#編寫的com元件推薦使用.net自帶的註冊工具rrgasm.exe工具,而且使用的註冊工具版本一定要與開發框架版本一起發布的版本。

WPF控制項開發之控制項概述 2

更改控制項外觀 更改控制項的外觀以適應應用程式的外觀,這是很常見的操作。可以根據您要達到的效果,通過執行以下操作之一來更改控制項的外觀 更改控制項的屬性值。為控制項建立 style。為控制項建立新 controltemplate。更改控制項的屬性值 許多控制項具有允許您更改控制項外觀的屬性,例如 b...

QT開發之QSS控制項

1 多選按鈕 ui checkbox setstylesheet qcheckbox qcheckbox indicator 未選中時正常狀態 qcheckbox indicator unchecked 未選中時,滑鼠懸停時的狀態 qcheckbox indicator unchecked hove...

WPF控制項開發之自定義控制項 1

windows presentation foundation wpf 控制項模型的擴充套件性極大減少了建立新控制項的需要。但在某些情況下,仍可能需要建立自定義控制項。本主題討論可最大限度減少在 windows presentation foundation wpf 中建立自定義控制項以及其他控制項...