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里有“关于”对话框组件吗?
小弟最近在用C#写东西,程序已经基本完工了,现在是想弄一个“关于”对话框,就是通常在“帮助...
-
VS2005 控件在winform下只能拖放,不能移动
VS2005 控件在winform下只能拖放,不能移动;在webform下直接拖放都不行.只能从工具箱里...
-
select控件
怎样在select框中显示图片?并且选择一个图片后可以显示在文本框中。请高手指点一下,最好详细一些!有实现的代码更好!!谢谢...
-
devExpress 控件能否将其它文件转换成PDF
1..devExpress 控件能否将其它文件转换成PDF(编程的方式自动转换)2.能否在指定位置给现...
-
菜鸟求助,关于学习的方法
我们刚开始学C#窗体控件,有哪位大虾能给提点学习这方面的建议
------解决方案--------------------
找...
-
关于VS2005添加自定义控件DLL
我在工具箱里点选择项,浏览dll文件,点确定,但是工具箱里没有显示我选择的控件
------解决方案-------...
-
fullcalendar如何绑定数据源
我做OA的日程安排功能,用的fullcalendar控件,第一次接触各种不会
我想让fullcalendar从绑定的数据源...
-
求人解答窗口间传递数值问题
我想做的是在Form1里textbox输入字符串或者数字,然后Form2里的 label1 能够显示出来
但是在两个...
-
C# 多项目相互调用
C#的解决方案中有多个项目(WinForm)
各项目都有自定义的组件、控件、公共变量
不同项目之间怎样相互调用、使...