2012-08-17 74 views
0

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

回答

4

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

下面是一些我跑进当我试图问题:

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

最后,我开始怀疑我是不是真的在努力做一些不可能的事情。并想知道是不是更好,只是使用.NET的一切和完全转储访问。不幸的是,今天我仍然在开发Access,但我们正在认真考虑在不久的将来转向.NET。

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

+0

这是我不想听到什么,但我想我会得到这个问题的答案。试图说服老板说,为这一个切换到.net是一个正确的方式,但你永远不知道我会幸运。 – Aharpe 2012-08-17 20:28:36