加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

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

发布时间:2020-12-14 19:33:02 所属栏目:资源 来源:网络整理
导读:我们开发了相当繁重的ms访问应用程序,大约有300种格式(是的!).由于代码实例化这些形式(并且不仅仅是打开它们),我们可以在屏幕上显示相同形式的多个实例. 为了绕过VBA的局限性,以及一些面向对象的概念(如继承,接口,封装等)的不良实现,代码正在管理: 从我们
我们开发了相当繁重的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#”中的更多详细信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读