微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将ms访问表单嵌入到C#模块中?

我们开发了相当繁重的ms访问应用程序,大约有300种格式(是的!).由于代码实例化这些形式(并且不仅仅是打开它们),我们可以在屏幕上显示相同形式的多个实例.

为了绕过VBA的局限性,以及一些面向对象的概念(如继承,接口,封装等)的不良实现,代码正在管理:

>从我们表单的所有活动实例中创建的一个窗口集合.
>一个’ghost windows‘对象,其中包含我们的代码所需的所有额外的属性方法.

所以,作为一个例子,当我想达到我的一个实例的标准属性时,我可以写:

MyWindows.accessWindow(hWnd).name

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

但是如果我想要达到我的一个实例的特定属性,我可以写:

MyWindows.ghostwindow(hWnd).originalRecordset

“originalRecordset”保存原始ADODB.recordset,原来的ADODB.recordset在表单第一次被加载时被加载(意味着在用户进行任何更改之前…可以是有趣的!)

它的工作非常好,但是编码可以是一个真正的PITA,特别是当知道如何在C#中做类似的操作时,只要将MS-Access表单对象封装到更通用的C#对象中即可.所以这是一个问题:可以将MS-Access表单嵌入到自制的C#dll中吗?可行吗

我不期待一个完整的答案,但我希望有一些帮助可以走上正轨.有什么想法吗?

解决方法

这应该通过Office Automation来实现.

简而言之,您使用c#启动您的访问应用程序,然后为您的表单获取正确的对象模型,与在vba中可用的相同.

这可能是第一步,如果你想使用更多的c#(好),少一些vba(meh)逐渐改善/重构你的访问应用程序.

MS KB文章“How to automate Microsoft Access by using Visual C#”中的更多详细信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐