为 ms access 2010 创建自定义控件

Aha*_*rpe 1 .net ms-access controls

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

HK1*_*HK1 5

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

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

  • 我从来没有受到工作的约束。换句话说,我无法以使其可在 MS Access 中使用的方式公开 .NET 的本机绑定。
  • 我无法让控件调整大小。当您在 Access 中更改控件的大小时,您只是更改了放置该控件的“设计图面”的大小。它对控件的大小没有影响。
  • .NET ActiveX 控件将打包在 .DLL 文件中,而不是 .OCX 文件中。您必须使用 RegAsm 工具来注册 .DLL 文件。
  • 您必须下载并安装 Microsoft 的 Interop Form 工具包 2.1 才能创建 COM 互操作控件。
  • 将 .Net 控件属性、方法和事件公开给 COM 接口是一个相当手动且费力的过程。例如,组合框作为“value”属性,但它不会自动映射到 ActiveX 控件的 .value 属性。事实上,我找不到任何方法来映射这两个属性,因此我必须实际创建一个具有不同名称的单独值属性,这对于使用该控件的程序员来说非常不直观。典型的手动“绑定”最终看起来像这样:Me!MyFieldName = Me.ActiveXControl.MyValue
  • 无论它是否是 ActiveX 控件,在 .Net 中用 COM 可调用包装器编写都有点愚蠢。您必须知道如何编写 .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