0

问题的简短版本:

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

长版:

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

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

所以现在我在我的一个项目中坚持使用 Access 2003,我希望能够为它创建自定义控件。Access 2003 第 3 方控件使用 COM。问题是,我曾经在其中创建自定义 COM UI 控件的唯一环境是 VB 6。现在,我仍然拥有 VB6,但由于 VB6 已经 10 多年了,我觉得有义务寻找其他选项。

我很确定还有人在创作 COM UI 控件,那么如果不是 VB6,你们在使用什么?

4

1 回答 1

1

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

于 2009-05-07T23:13:00.277 回答