C# OCX控件之开发

来源:互联网 发布:ubuntu安装分区教程 编辑:程序博客网 时间:2024/05/16 08:08

C#代码
在C#中,实则没OCX控件一说,相对应的只是COM组件,编译后也是.DLL,而不是.ocx.所以在C#中,在创造项目时不得不创设类库项目。
然后乃是具体的代码开发。(略)
要使组件变为能被网页脚本调用的OCX控件,在开发时,要注意以下几点:
一、务必要为将公布OCX控件的主类设立GUID码。该码在创造类库时,C#能自动生成一个(你可以应用,也可以从新生成),依存储在AssemblyInfo.cs中。设立GUID的代码参考以次:
namespace xxxx
{
[Guid("八d七d8518-ca58-4863-b94d-三c616fda七b35")]//从AssemblyInfo.cs资料中直接复制过来
public partial class RunData : UserControl, IObjectSafety
{}
}
二、务须要兑现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
{
///
/// 把控件公布成com组件时务须兑现的接口.该接口的GUID是固定的,不能批改,要不然组件公布不成功
///
[Guid("CB五BDC81-93C一-11CF-八F20-00805F二CD064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectSafety
{
// 步骤定义
void GetInterfacceSafyOptions(System.Int32 riid,out System.Int32 pdwSupportedOptions,out System.Int32 pdwEnabledOptions);
void SetInterfaceSafetyOptions(System.Int32 riid,System.Int32 dwOptionsSetMask,System.Int32 dwEnabledOptions);
}
}
接话柄现:
public void GetInterfacceSafyOptions(System.Int32 riid,out System.Int32 pdwSupportedOptions,out System.Int32 pdwEnabledOptions)
{
pdwSupportedOptions = 一; //不用批改该代码
pdwEnabledOptions = 二; //不用批改该代码
return;
}
public void SetInterfaceSafetyOptions(System.Int32 riid,System.Int32 dwOptionsSetMask,System.Int32 dwEnabledOptions)
{
return;
}
三、对AssemblyInfo.cs进展编者,批改呼应的属性。包括以次属性及值:
// 则将此类型上的 ComVisible 属性设立为 true。
[assembly: ComVisible(true)] //将false更动为true,自动生成的诠释也做了说明
//新平添下边的属性。该属性要求引述System.Security
[assembly: AllowPartiallyTrustedCallers()]
// 如若此项目向 COM 公开,则下列 GUID 用以门类库的 ID
//[assembly: Guid("80c07fca-841c-43c九-bd34-e九f三a六e87a85")] //诠释掉该属性,此属性务须诠释,最初我没诠释此属性,生成COM组件总是不成功,有警告,能影响最后的公布.试了N次才试出原因是没诠释此属性。
要引述:using System.Runtime.InteropServices;
四、编者工程属性。
A、在[应用程序]页,输出部类务必指定为“种库”.
B、在[生成]页,务须勾选“为Com Interop登记”选项。
作了之上批改,如果能编译顺利,则示意你的COM组件已够在你本机公布顺利了。也说明你的组件自身没事儿问题了。
你可以写一个测试网页对你的COM组件进展摘引了。
如果是IIS,可以直接施用DLL引述形式开展引述,格式:

也可以应用clsid模式摘引。
如若非IIS应用服务器,如tomcat等,则唯其如此运用CLSID模式。格式:

"八d七d8518-ca58-4863-b94d-三c616fda七b35"乃是最开始谈到的那个GUID码!
在本机上运作此网页应当不会出现问题了,由于在开发组件的过程中VS.NET能自动进展组件登记。
施用OLE查看器可以查看目前组件是不是顺利登记到本机,如若没找出该组件,应当应用手工登记形式开展登记。
通常情况动手工登记OCX都是采取RegSvr32.exe,但登记C#编撰的COM组件推荐运用.NET自带的登记工具RrgAsm.exe工具,并且施用的登记工具版本一定要与开发构架版本一行公布的版本。
本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception

  • 2436 - ORA-00600: 内部错误代码
  • 2437 - PLS-00103: 出现符号 'CUR_EXTRACT '在需要下列之一时
  • 2438 - Failed to commit: Missing IN or OUT parameter at index:: 1
  • 2439 - ORA-06552: PL SQL: Compilation unit analysis terminated
  • 2440 - java.lang.InstantiationError: oracle.jdbc.driver.OracleConnection
  • 2441 - ORA-01019
  • 2442 - 触发器出错希望不要影响原来的插入事件
  • 2443 - EXP-00056: 遇到 ORACLE 错误 6550
  • 2444 - YYYY-MM-DD HH24-MI-SS英文操作系统出错
  • 2445 - 找不到oci.dll
  • 2446 - OCI-04030: 在尝试分配 16396 字节 (koh-kghu sessi
  • 2447 - ORA-06502: PL SQL: 数字或值错误
  • 2448 - ORA-01406: 读取的列值被截断
  • 2449 - MERGE编译错误
  • 2450 - java.sql.SQLException: 违反协议
  • 2451 - TNS:lost contact
  • 2452 - SQL Window cannot be closed
  • 2453 - IMP-00017: 由于 ORACLE 的 2270 错误,以下的语句失败
  • 2454 - Enterprisemanager configuration failed due to the following error
  • 2455 - kadbegcre OCIAnyData) 时进程内存不足
  • 原创粉丝点击