.net 为ms access 2010创建自定义控件

.net 为ms access 2010创建自定义控件,.net,ms-access,controls,.net,Ms Access,Controls,有没有办法用.Net语言创建自定义控件以供MS Access 2010使用?我有一个程序正在使用子窗体来尝试模拟控件,但它确实不能很好地工作。如果我能够在C#或VB.Net或其他任何东西中创建自定义控件,并将其导入以访问我的生活就会容易得多。这可能吗?虽然理论上可以在.NET中创建一个可用于MS Access的控件,但这也非常不切实际,因为有太多东西不起作用 以下是我在尝试时遇到的一些问题: 我从来没有强迫自己去工作。换句话说,我不能以一种可以在MS Access中使用的方式公开.NET的本机

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

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

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

  • 我从来没有强迫自己去工作。换句话说,我不能以一种可以在MS Access中使用的方式公开.NET的本机绑定
  • 我无法使控件调整大小。从Access中更改控件的大小时,只需更改放置控件的“设计图面”的大小。它对控件的大小没有影响
  • .NET ActiveX控件将打包在.DLL文件中,而不是.OCX文件中。您必须使用RegAsm工具来注册.DLL文件
  • 您必须下载并安装Microsoft Interop Form的Toolkit 2.1才能创建COM Interop控件
  • 向COM接口公开.Net控件属性、方法和事件是一个相当手工和费力的过程。例如,组合框作为“value”属性,但不会自动映射到ActiveX控件的.value属性。事实上,我找不到任何方法来映射这两个属性,所以我不得不用不同的名称创建一个单独的值属性,这对于使用控件的程序员来说是很不直观的。一本典型的手册“装订”最终看起来像这样:我!MyFieldName=Me.ActiveXControl.MyValue
  • 在.Net中编写COM可调用包装器有点愚蠢,不管它是否是ActiveX控件。您必须知道如何编写.NET代码,以便属性、方法和事件能够通过VBA中的Intellisense正确显示。这涉及到编写一个公共接口,使用委托,我甚至都不记得是什么。只要说它很复杂就够了
在这一切结束时,我开始怀疑我是否真的在努力做一些不可能的事情。他想知道如果一切都使用.NET并完全转储访问权限是否会更好。不幸的是,今天我还在开发Access,但我们正在认真考虑在不久的将来转向.NET

你可以在这里看到我提出的另一个相关问题:

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

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

  • 我从来没有强迫自己去工作。换句话说,我不能以一种可以在MS Access中使用的方式公开.NET的本机绑定
  • 我无法使控件调整大小。从Access中更改控件的大小时,只需更改放置控件的“设计图面”的大小。它对控件的大小没有影响
  • .NET ActiveX控件将打包在.DLL文件中,而不是.OCX文件中。您必须使用RegAsm工具来注册.DLL文件
  • 您必须下载并安装Microsoft Interop Form的Toolkit 2.1才能创建COM Interop控件
  • 向COM接口公开.Net控件属性、方法和事件是一个相当手工和费力的过程。例如,组合框作为“value”属性,但不会自动映射到ActiveX控件的.value属性。事实上,我找不到任何方法来映射这两个属性,所以我不得不用不同的名称创建一个单独的值属性,这对于使用控件的程序员来说是很不直观的。一本典型的手册“装订”最终看起来像这样:我!MyFieldName=Me.ActiveXControl.MyValue
  • 在.Net中编写COM可调用包装器有点愚蠢,不管它是否是ActiveX控件。您必须知道如何编写.NET代码,以便属性、方法和事件能够通过VBA中的Intellisense正确显示。这涉及到编写一个公共接口,使用委托,我甚至都不记得是什么。只要说它很复杂就够了
在这一切结束时,我开始怀疑我是否真的在努力做一些不可能的事情。他想知道如果一切都使用.NET并完全转储访问权限是否会更好。不幸的是,今天我还在开发Access,但我们正在认真考虑在不久的将来转向.NET

你可以在这里看到我提出的另一个相关问题:

这正是我不想听的,但我想我会得到答案的。很难说服老板,换成.net来做这件事是正确的,但你永远不知道我会走运。这正是我不想听的,但我想我会得到答案的。很难说服老板,换成.net来做这件事是正确的,但你永远不知道我会走运。