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、 将组件复制到网站相应目录中。

使用C#创建ActiveX控件(译文)

首先创建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>

原文地址:https://www.cnblogs.com/ting5/p/5151545.html