gpt4 book ai didi

c# - 如何在 C# 模块中嵌入 ms-access 表单?

转载 作者:可可西里 更新时间:2023-11-01 09:14:27 25 4
gpt4 key购买 nike

我们开发了一个相当繁重的 ms-access 应用程序,其中包含大约 300 个表单(是的!)。由于代码实例化了这些表单(而不只是“打开”它们),我们可以在屏幕上显示同一表单的多个实例。

为了绕过VBA的局限性,以及它对继承、接口(interface)、封装等一些面向对象概念的糟糕实现,代码管理:

  • 由我们表单的所有事件实例组成的 Windows 集合。
  • 一个“幽灵窗口”对象,它包含我们的代码所需的所有额外属性和方法。

因此,举个例子,当我想达到我的一个实例的标准属性时,我可以这样写:

MyWindows.accessWindow(hWnd).name 

其中hWnd是Windows给定的句柄,命名为标准的form().name属性

但是如果我想 Access 我的一个实例的特定属性,我可以这样写:

MyWindows.ghostWindow(hWnd).originalRecordset

其中 'originalRecordset' 保存原始 ADODB.recordset,它是在第一次实例化表单时加载的(意思是在用户进行任何更改之前......可能很有趣!)

它工作得很好,但编码它可以是一个真正的 PITA,特别是当一个人知道在 C# 中做类似的事情是多么大胆时,只要可以将 MS-Access 表单对象封装到一个更通用的 C# 对象中.所以问题来了:能否将 MS-Access 表单嵌入到自制的 C# dll 中?可行吗?

我不希望得到完整的答案,但我希望得到一些帮助以走上正轨。有想法的 friend 吗?

最佳答案

这应该可以通过办公自动化来实现。

简而言之,您使用 c# 启动您的 Access 应用程序,然后为您的表单获取正确的对象模型,就像您在 vba 中使用它们一样。

如果您想使用更多的 c#(好的)和更少的 vba(meh)来逐步改进/重构您的 Access 应用程序,这可能是第一步。

MS 知识库文章中的更多详细信息 "How to automate Microsoft Access by using Visual C#"

关于c# - 如何在 C# 模块中嵌入 ms-access 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com