顺便说一句,在我们开始之前,如果...
- 您在问如何在没有应用程序 chrome 的情况下仅托管一个 Access 表单;和
- 您正在使用 Access 的运行时版本
...您违反了 Access Runtime EULA:
2. 额外的许可要求和/或使用权利。
...
ii. 分发要求。对于您分发的任何可分发代码,您必须...
- 保持在您的用户界面中显示的包含“Powered by Microsoft Office Access”声明的状态栏供用户随时查看;
阅读 EULA(不是那么长)可能是为了了解您可以和不能使用 Access Runtime 的目的。
因此,我问是否有可能以某种方式在 .Net Windows 表单中托管 Microsoft Access 表单,方法是将表单本身添加为控件或子表单,以使我可以直接访问所有控件在.Net 的表格上?
您可能想要反转场景:在 Access 中运行您的 .NET 代码。
这基本上需要在 Visual Studio 中创建一个 Access 可以加载和操作的共享加载项。从那里您可以连接控件和事件。
public void HookupControls(
Access.CommandButtonClass button,
Access.ListBoxClass listBox,
Access.TextBoxClass textBox1,
Access.TextBoxClass textBox2)
{
fillProductsButton = button;
fillProductsButton.Click +=
new Access.DispCommandButtonEvents_ClickEventHandler(
fillProductsButton_Click);
fillProductsButton.OnClick = "[Event Procedure]";
unitPriceTextBox = textBox1;
quantityTextBox = textBox2;
}
它需要您的 Access 应用程序的一些合作:
With COMAddIns("SharedAddIn.Connect")
''// Make sure the COM add-in is loaded.
.Connect = True
''// Hook up the desired objects.
.Object.HookupControls Me.fillProductsButton, Me.productsListBox, _
Me.unitPriceTextBox, Me.quantityTextBox
End With
免责声明:我想尝试一下,但在 Visual Studio 2012 中,似乎缺少创建共享加载项的能力。YMMV。但是,文档中有对共享加载项的引用,所以也许我遗漏了一些东西,或者该功能不在 VS 2012 RC 中。