C# 做ActiveX控件问题
创建ActiveX控件:
1、 新建项目“Windows控件库”,从项目中删除UserControl1.cs,新建“用户控件”项并指定名称。
2、 打开项目属性,在“生成”标签页中选中“为COM Interop注册”。
3、 打开Properties中的AssenblyInfo.cs,修改[assembly: ComVisible(false)],将false改为true,否则编译会出现“不包含可为COM Interop注册(注销)的任何类型”警告。
4、 编译。
创建网页:
1、 新建ASP.NET网站,选择“位置”时单击“浏览”,选择本地IIS,“创建新的Web应用程序”,打开并确定。
2、 在Default.aspx的适当位置加入
<object classid="http:TestActiveX.dll#TestActiveX.Picture" width="640px" height="480px"></object>
其中classid的格式为“http:组件名#命名空间.类”。
3、 生成网站。
4、 将组件复制到网站相应目录中。
首先创建DLL库,代码如下:
using System;
using System.Runtime.InteropServices;
namespace ANamespace
{
// 定义COM组件的接口
public interface ASignatures
{
string FName();
string SName();
int Age { get;}
}
// 表明此类会被公开为一个COM组件的接口
[ClassInterface(ClassInterfaceType.AutoDual)]
public class AClass :ASignatures
{
// 具体实现接口的方法
public string FName()
{
return "Imran";
}
public string SName()
{
return "Nathani";
}
public int Age
{
get { return 24; }
}
}
}
将上面的代码保存为AClass.cs,然后编译: csc /t:library AClass.cs
将得到一个AClass.dll,然后注册:regasm AClass.dll /tlb /codebase
最后创建一个HTML测试网页,内容如下:
<html>
<head>
<script language="javascript">
<!-- Load the ActiveX object -->
var x = new ActiveXObject("ANamespace.AClass");
<!-- Access the Method -->
alert(x.FName());
alert(x.SName());
<!-- Access the Property -->
alert(x.Age);
</script>
</head>
<body>
</body>
</html>