用vb调用c#写的net控件

用vb调用c#写的net控件

ID:33717624

大小:316.00 KB

页数:16页

时间:2019-02-28

用vb调用c#写的net控件_第1页
用vb调用c#写的net控件_第2页
用vb调用c#写的net控件_第3页
用vb调用c#写的net控件_第4页
用vb调用c#写的net控件_第5页
资源描述:

《用vb调用c#写的net控件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、虽然IT开发技术日新月异,不过业界仍然运行着大量的VB系统,这些系统凝聚了不少客户的投资,应当要一定程度的保护和利用。因此也就产生了一种需求,也就是使用旧的开发技术仍然可以使用新技术的产出。本文就讨论如何在VB6.0开发中使用上WinForm.NET控件。[袁永福版权所有] 二.软件原理:  运行VBIDE,打开或创建一个EXE工程,打开窗体设计器,如下图所示:   为了能在窗体上添加控件,需要往窗体左边的工具箱上添加项目,需要点击菜单项目“Project-Components”,此时会弹出如下图所示的对话框:    点击“Browse”按钮,弹出文件选择对话框,这个对话框中

2、优先选择OCX文件,而C#编译结果绝不可能是OCX文件的,此时即使选择一个.NET程序集DLL文件,无论如何必然会报错“ThisfilenotregisterableasanActiveXComponent”。[袁永福版权所有]  因此也就是说,使用C#开发的WinForm.NET控件是不可能直接通过传统的模式放置在VB窗体上。  不过VB仍然可以通过COM方式调用.NET程序集中的对COM公开的类型。此时就可以想出一种曲线实现方式,那就是VB创建C#组件,该组件是一个WinForm.NET控件,然后调用Win32APISetParent函数,将WinForm.NET控件硬塞

3、入VB窗体中。这样在用户界面上,用户能看到和使用WinForm.NET控件;在后台,VB代码能访问.NET组件提供的公开的属性、方法和事件,实现了VB全方位的调用WinForm.NET控件。 三.C#开发C#控件开发  根据上述的软件原理,笔者开发一个WinForm.NET控件并成功的应用于VB6.0的开发中,现对软件进行说明。  这个WinForm.NET控件名为MyWinFormControl,派生自System.Windows.Forms.UserControl类型,它包含在一个名为DCWinFormControlLib的C#项目中,项目输出类型为类库,目标框架为.NE

4、T2.0,添加了对System.Windows.Forms.dll的引用。界面设计:MyWinFormControl控件的用户界面设计如下:   在界面上放置一个名为“btnAction”的按钮,一个名为“myTextBox”的文本框。定义公开属性和方法:  打开该控件的C#代码文件,可以看到声明该类型的C#代码如下:[System.Runtime.InteropServices.ComVisible(true)][System.Runtime.InteropServices.Guid("60550064-C97F-4306-A8B2-6908F50780E3")][Syst

5、em.Runtime.InteropServices.ComSourceInterfaces(typeof(IComMyEvent))]publicpartialclassMyWinFormControl:UserControl{}  这段代码中,第一行代码的ComVisible标记类型为COM公开的;第二行代码Guid标记了类型在COM中的唯一编号;第三行代码的ComSourceInterfaces指明该类型实现了名为IComMyEvent的事件接口。[袁永福版权所有]  VB中无法直接绑定编译阶段未知的控件事件,同时也无法直接感应C#中的事件,为此需要编写一个接口通知VB

6、存在若干事件,使得VB能绑定事件。因此在此定义了IComMyEvent接口,声明了C#控件中的事件,IComMyEvent接口定义如下usingSystem.Runtime.InteropServices;[Guid("096EF9A6-24CB-4091-A18F-34DA38C9A6F1")][ComVisible(true)][InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]publicinterfaceIComMyEvent{///

///按钮按下事件///[DispId(1

7、2340)]voidComButtonClick();///

///文本内容修改事件t///[DispId(12350)]voidComTextChanged();}//////无参数无返回值委托类型///publicdelegatevoidVoidEventHandler();而后在控件的C#代码中添加以下代码:#region实现IComMyEvent中的成员//////按钮按下事件///p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。