1

有没有办法在 .Net 语言中创建自定义控件以在 MS Access 2010 中使用?我有一个程序正在使用子表单来尝试模拟控件,但它确实不能很好地工作。如果我能够用 C# 或 VB.Net 或其他任何东西创建自定义控件并将其导入 Access,我的生活会容易得多。这可能吗?

4

1 回答 1

5

虽然理论上可以在 .NET 中创建一个可以在 MS Access 中使用的控件,但这也是非常不切实际的,因为有很多东西不起作用。

这是我在尝试时遇到的一些问题:

  • 我从来没有得到约束工作。换句话说,我无法以使其在 MS Access 中可用的方式公开 .NET 的本机绑定。
  • 我无法让控件调整大小。当您从 Access 中更改控件的大小时,您只需更改放置控件的“设计图面”的大小。它对控件的大小没有影响。
  • .NET ActiveX 控件将打包在 .DLL 文件中,而不是 .OCX 文件中。您必须使用 RegAsm 工具来注册 .DLL 文件。
  • 您必须下载并安装 Microsoft 的 Interop Form 的 Toolkit 2.1 才能创建 COM 互操作控件。
  • 向 COM 接口公开 .Net 控件属性、方法和事件是一个相当手动且费力的过程。例如,组合框作为“值”属性,但它不会自动映射到 ActiveX 控件的 .value 属性。事实上,我找不到任何方法来映射这两者,所以我必须实际创建一个具有不同名称的单独值属性,这对于使用控件的程序员来说远非直观。典型的手动“绑定”最终看起来像这样:Me!MyFieldName = Me.ActiveXControl.MyValue
  • 在 .Net 中使用 COM 可调用包装器编写是否是 ActiveX 控件有点愚蠢。您必须知道如何编写您的 .NET 代码,以便在 VBA 中使用 Intellisense 正确显示属性、方法和事件。这涉及编写一个公共接口,使用委托,我什至不记得是什么。可以说它很复杂。

在这一切结束时,我开始怀疑我是否真的在努力做一些不可能的事情。并且想知道将 .NET 用于所有内容并完全转储 Access 会不会更好。不幸的是,今天我仍在使用 Access 进行开发,但我们正在认真考虑在不久的将来迁移到 .NET。

您可以在这里看到我贡献的另一个相关问题:http: //social.msdn.microsoft.com/Forums/en-US/accessdev/thread/06867384-9e1f-486d-982a-6bbb0f40848d/#5b27805f-3a95- 4bbd-a50e-3de06e199490

于 2012-08-17T19:36:51.177 回答