在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 中建立自定義控制項以及其他控制項...