专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > .NET组件控件

C#写的控件dll,利用cab包+inf文件的方式,怎样在ie实现ActiveX形式的自动发布安装解决办法

发布时间:2011-06-24 19:13:28 文章来源:www.iduyao.cn 采编人员:星星草
C#写的控件dll,利用cab包+inf文件的方式,怎样在ie实现ActiveX形式的自动发布安装
最近项目需要实现用c#写的控件以ActiveX控件的形式在ie发布安装,参考了红马天下的那片C#编写ActiveX控件,在红马的文章中,是将c#写的控件是在编译的时候以注册为com(.net项目属性,控件项目的属性中设置),然后再object的codebase属性中指定的是.exe文件,采取ie端安装exe的形式的,现在,想不通过.exe,而是通过ActiveX普遍采用的.cab+inf形式去发布,但一直没有成功,在注册表中显示能够注册,但是在页面显示的时候,却没有找到控件对象,是不是.net写的控件不能通过这种方式注册呢?
请各位大虾指点,谢谢

------解决方案--------------------
看看http://www.codeproject.com/com/CompleteActiveX.asp,有詳細的教程,還有Demo和源碼,應該能滿足的要求,不懂再問。
------解决方案--------------------
ActiveX控件在C#中的使用
在开始一切工作之前,请确保ActiveX控件已经注册到计算机,请运行系统安装目录下面“注册控件.bat”。

在C#中,新建一个Windows应用程序,并指定一个位置和项目名称。
按“确定”,画面上出现主窗口界面。然后在工具箱上单击右键,出现下面菜单
选择“添加/移除项(I)...”,出现一个窗口,选择COM控件页,选择Visual Graph ActiveX Control

按“确定”,会增加下面的图标。
按下图标,在主窗口上拉框创建一个Visual Graph ActiveX控件,缺省的名字为axvgctrl1。

编辑源代码,在前面添加

using vgctrl40;

http://www.visual-graph.com-------------------------------------------

第一步:双击窗口,填写下面的代码

private void Form1_Load(object sender, System.EventArgs e)
{
axvgctrl1.Design( " " );
}

这句程序执行后,将在控件中设计一个新的Visual Graph视图文件,控件支持Design(设计)和Run(运行)两个函数,无论接下来要干什么,一开始必须执行这两个函数其中一个,在绘图版本中,多用Design函数,用户将可以用鼠标在控件窗口上编辑图形;在工业监控等领域一般多用Run函数,用户不能用鼠标直接编辑图形,但用鼠标点击画面上不同的图形时会有各种控制事件发生,而且某些图形还会产生动作。如果要打开一个视图文件,参数是文件名。
http://www.visual-graph.com--------------------------------------------

第二步:在窗口上放一个按钮button1,双击这个按钮,编写下面的代码

private void button1_Click(object sender, System.EventArgs e)
{
ISheet ASheet;
IText AText;
ASheet = axvgctrl1.ActiveSheet;
AText = (IText)ASheet.AddUnit( "Text ", 0, 0, 100, 100 );
AText.Text = "Hello World! ";
}

注意,一定要确保前面添加了using vgctrl40;否则这里的对象,C#不认识。

ActiveSheet是视图文件的当前页面(页面类),Visual Graph图形系统支持多个页面,当前画图的工作都是在ActiveSheet上实现的,一般应用中只要一个页面就够了,但是如果视图文件是作为图库来用,它里面可能页面就多了。

AddUnit是页面类的函数成员,在ASheet页面上添加一个文字单元,宽度和高度都是100。这句程序执行后,用鼠标点击新生成的图形,可以在上面输入字符,或者用鼠标移动这个图形,改变它的大小等。由于AddUnit返回的类型是通用的IUnit,而我们确切地知道我们会创建一个文字单元出来,所以可以把它强制转换为IText类型(IText是从IUnit继承下来的)。

Text是文字单元类的属性成员,通过它修改图形的文字属性。


--------------------------------------------

第三步:在窗口上再放一个按钮button2,双击这个按钮,编写下面的代码

private void button2_Click(object sender, System.EventArgs e)
{
axvgctrl1.NewUnit( "Line ", 0 );
}

NewUnit是视图类的命令函数,执行这句程序后,可以在画面上用鼠标画线。
http://www.visual-graph.com

--------------------------------------------

第四步:下面,我们要给控件加上相应的事件,例如右键事件。

private void axvgctrl1_OnRButtonDown(object sender, Axvgctrl40.IvgctrlEvents_OnRButtonDownEvent e)
{
ISheet ASheet;
IUnit AUnit;
ASheet = axvgctrl1.ActiveSheet;
AUnit = ASheet.UnitAtPoint(e.x, e.y, null );
MessageBox.Show( this, "您在图形: " + AUnit.Name + " 上按下了右键! " );
}

UnitAtPoint是页面类的函数成员,返回当前鼠标位置处的图形单元。我们一般在右键事件上挂上菜单,用这种办法我们就能知道当前要对什么图形对象进行操作,然后,根据不同的图形对象,产生不同的菜单内容。此处也可以用下面的写法:
AUnit = ASheet.UnitAtCursor( null ),这样也得到当前鼠标位置所在的图形。


--------------------------------------------

第五步:上面这个程序有个漏洞,如果我们没有首先单击button1按钮创建一个图形,那么这里的AUnit就是空,将使得最后一行程序出错,因此,要修改为:

private void axvgctrl1_OnRButtonDown(object sender, Axvgctrl40.IvgctrlEvents_OnRButtonDownEvent e)
{
ISheet ASheet;
IUnit AUnit;
ASheet = axvgctrl1.ActiveSheet;
AUnit = ASheet.UnitAtPoint(e.x, e.y, null );
if( AUnit != null )
MessageBox.Show( this, "您在图形: " + AUnit.Name + " 上按下了右键! " );
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 虚心求教解决思路

    虚心求教 本人刚学.net,有好多的问题明白,求大侠帮忙解释一下这个问题,本人不胜感激。 <asp:TreeNode Text="添加" Value="添加"...

  • 【】.NET里有“关于”对话框组件吗

    【求助】.NET里有“关于”对话框组件吗? 小弟最近在用C#写东西,程序已经基本完工了,现在是想弄一个“关于”对话框,就是通常在“帮助...

  • VS2005 控件在winform下只能拖放,不能移动,该怎么解决

    VS2005 控件在winform下只能拖放,不能移动 VS2005 控件在winform下只能拖放,不能移动;在webform下直接拖放都不行.只能从工具箱里...

  • select控件解决方案

    select控件 怎样在select框中显示图片?并且选择一个图片后可以显示在文本框中。请高手指点一下,最好详细一些!有实现的代码更好!!谢谢...

  • devExpress 控件能否将其它文件转换成PDF,该怎么处理

    devExpress 控件能否将其它文件转换成PDF 1..devExpress 控件能否将其它文件转换成PDF(编程的方式自动转换)2.能否在指定位置给现...

  • 初学者求助,关于学习的方法

    菜鸟求助,关于学习的方法 我们刚开始学C#窗体控件,有哪位大虾能给提点学习这方面的建议 ------解决方案-------------------- 找...

  • 关于VS2005添加自定义控件DLL,该怎么解决

    关于VS2005添加自定义控件DLL 我在工具箱里点选择项,浏览dll文件,点确定,但是工具箱里没有显示我选择的控件 ------解决方案-------...

  • fullcalendar怎么绑定数据源

    fullcalendar如何绑定数据源 我做OA的日程安排功能,用的fullcalendar控件,第一次接触各种不会 我想让fullcalendar从绑定的数据源...

  • 求人解答窗口间传递数值有关问题

    求人解答窗口间传递数值问题 我想做的是在Form1里textbox输入字符串或者数字,然后Form2里的 label1 能够显示出来 但是在两个...

  • C# 多项目互相调用

    C# 多项目相互调用 C#的解决方案中有多个项目(WinForm) 各项目都有自定义的组件、控件、公共变量 不同项目之间怎样相互调用、使...

热门推荐: