Ms access 在COM for Access 2003中编写自定义控件

Ms access 在COM for Access 2003中编写自定义控件,ms-access,com,user-controls,custom-controls,Ms Access,Com,User Controls,Custom Controls,问题的简短版本: 如何在不使用VB6的情况下为MS Access 2003编写自定义控件 长版本: 在过去的6年里,我一直被编写C#WinForms应用程序的乐趣所宠坏,现在我不得不修改Access 2003应用程序。是的,它最终将被改写为一个dotnet应用程序,但现在,它必须仍然是一个access2003应用程序 因此,我喜欢编写WinForms应用程序的一件事是,我可以接受任何WinForms UI对象,比如一个combobox,并将其转换为一个自定义控件,向其中添加功能。我还可以使用多个

问题的简短版本:

如何在不使用VB6的情况下为MS Access 2003编写自定义控件

长版本:

在过去的6年里,我一直被编写C#WinForms应用程序的乐趣所宠坏,现在我不得不修改Access 2003应用程序。是的,它最终将被改写为一个dotnet应用程序,但现在,它必须仍然是一个access2003应用程序

因此,我喜欢编写WinForms应用程序的一件事是,我可以接受任何WinForms UI对象,比如一个combobox,并将其转换为一个自定义控件,向其中添加功能。我还可以使用多个控件,将它们作为自定义控件组合到一个设计图面上,然后将其作为自定义控件显示在我的VS.Net工具箱中。(当您需要反复使用一组复杂的数据收集控件时,这非常方便)

因此,现在我的一个项目一直使用Access 2003,我希望能够为它创建自定义控件。Access 2003第三方控件使用COM。问题是,我在VB6中创建自定义COM UI控件的唯一环境。现在,我仍然有VB6,但由于VB6已经超过10年了,我觉得有义务寻找其他的选择


我敢肯定,仍然有人在创作COM UI控件,所以,如果不是VB6,你们在使用什么?

我怀疑你们在这方面是否会得到很多帮助,因为大多数Access开发人员并不需要或渴望你们所要求的。事实上,我所熟悉的大多数优点都避免了Access中所有类型的非本机控件,这仅仅是因为在Access应用程序中使用它们会带来很多问题。Access实际上在许多方面都是一种非常特殊的动物,因此创建在Access中工作的控件比创建在VB应用程序中工作的控件要困难得多。我不知道这是因为什么,我猜其中一个原因是访问表单上的单个控件只有在具有焦点时才具有窗口句柄。原因很清楚:在设计Access时,系统资源是有限的,您不希望为表单上的每个控件分配窗口句柄(可能在100年代)。这也许不是现在的问题,但Access中的设计保持不变。有一些变通方法,但据我观察,它们并不漂亮。

FMS Inc.从Access 2.0开始就一直在为MS Access开发自定义控件。所以我知道有一种方法可以做到这一点,并且把它做好。当然,我没有说这是不可能的,只是说这比你想象的要难。FMS专注于访问产品,因此,他们已经积累了足够的专业知识,知道如何处理与构建访问控制相关的问题,这并不奇怪。但他们是为数不多的这样的组织之一,考虑到访问的广泛使用,这对我来说可能比大多数人(至少是那些使用访问的人)想要尝试的任务更困难。尽管我认为访问人员可能不想要他们,因为他们不容易拥有它们。Access中的约定表单与其他应用程序中的表单不同:我没有太多地使用它们,但从我的角度来看,它们的工作方式似乎更像一个报表编写器。我想这很聪明,但它们不适合扩展。你可能会惊讶于它们实际上是多么的可扩展。您可能想浏览Stephen Leban的代码示例,以获得一些非常聪明的代码,使用Access以一些令人惊讶的方式进行编码:好吧,当然——我并没有说这是不可能的,只是这比一些人可能想象的要难:)