admin 管理员组

文章数量: 1086019


2024年3月19日发(作者:展示mysql表结构)

一、C#中调用OCX控件

调用OCX控件的步骤:

1、在系统中注册该ocx控件,命令: 控件位置(加 /u 参数是取消注册)

2、在.net的工具箱中添加该控件,拖到form中去就可以了。

不用工具箱的话,自己手工添加,需要注意一个问题,就是要用来包装一下ocx控件的类,然

后再程序中引用生成的dll就可以了。

aximp [options]{ | }

The following command generates and for the Media Player

control

.

aximp c:

ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。

Windows 窗体只能承载 Windows 窗体控件,即从 Control 派生的类。 生成可承载于 Windows

窗体上的 ActiveX 控件的包装类。这使您得以使用可应用于其他 Windows 窗体控件的同一设计时支持和

编程方法论。若要承载 ActiveX 控件,必须生成从 AxHost 派生的包装控件。此包装控件包含基础 ActiveX

控件的一个实例。它知道如何与 ActiveX 控件通信,但它显示为 Windows 窗体控件。这个生成的控件承

载 ActiveX 控件并将其属性、方法和事件公开为生成控件的属性、方法和事件。

如果不包装一下直接用,会出现 灾难性 错误。上面已经说明了原因。

在项目中引用生成的ax开头的dll,在窗体代码中增加:

声明一个公有的控件对象:

public CREC AxISPICREC;

在InitializeComponent()方法内初始化控件:

AxISPICREC = new CREC();//必须new对象,否则窗体设计器出问题

((rtInitialize)(CREC)).BeginInit();//初始

化开始

(CREC);//添加控件

((rtInitialize)(CREC)).EndInit();

te =

(()(ect("te")));//设计控件

状态

如果遇到“正试图在 os 加载程序锁内执行托管代码”这个错误,请设置“调试”--“异常”

"----"Managed Debugging Assistants"中勾掉"LoaderLock" 就可以了。

具体的可以看ms的文章:/en-us/library/8ccdh774(VS.80).aspx

二、正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内

运行托管代码 解决方法:

.NET2.0中增加了42种非常强大的调试助手,lock 是其中之一。Loaderlock

检测在一个拥有操作系统loader lock的线程上运行托管代码的情况。这样做有可能会引起

死锁,并且有可能在操作系统加载器初始化DLL前被使用。

解决此异常的方法为:

办法一

1. 把vs2005菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock 的选

中状态去掉

2. 如果异常(exception)这一项没有的话,在工具---自定义---命令选项卡---左边

选择调试--右边把异常托到菜单里

3. 快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态

去掉

方法二

在HKEY_LOCAL_mework下面增加一个String,值为

"0"

不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处。


本文标签: 控件 代码 托管 窗体