如何将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#”中的更多详细信息

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些