我们已经开发了相当重的ms访问应用程序,有大约300个表单(是的!).当代码实例化这些表单(并且不只是"打开"它们)时,我们可以在屏幕上显示同一表单的多个实例.
为了绕过VBA的限制,以及它对一些面向对象概念(如继承,接口,封装等)的不良实现,代码管理:
因此,作为一个例子,当我想要达到我的一个实例的标准属性时,我可以写:
MyWindows.accessWindow(hWnd).name
Run Code Online (Sandbox Code Playgroud)
其中hWnd是Windows提供的句柄,并命名标准form().name属性
但是如果我想要达到我的一个实例的特定属性,我可以写:
MyWindows.ghostWindow(hWnd).originalRecordset
Run Code Online (Sandbox Code Playgroud)
其中'originalRecordset'包含原始ADODB.recordset,它是在表单第一次实例化时加载的(意味着在用户进行任何更改之前......可能很有趣!)
它工作得很好,但是对它进行编码可能是一个真正的PITA,特别是当人们知道在C#中做类似的事情是多么明亮,只要可以将MS-Access表单对象封装到更通用的C#对象中.所以这就是问题:可以将MS-Access表单嵌入到自制的C#dll中吗?它可行吗?
我不希望得到一个完整的答案,但我期待一些帮助才能走上正轨.好朋友好吗?
这应该可以通过办公自动化来实现。
简而言之,您使用 C# 启动访问应用程序,然后为您的表单获取正确的对象模型,就像在 vba 中使用它们一样。
如果您想使用更多的 c#(好)和更少的 vba(meh)来逐渐改进/重构您的访问应用程序,这可能是第一步。
更多详细信息,请参阅 MS 知识库文章“如何使用 Visual C# 自动化 Microsoft Access”