7

我有一个带有文本框、组合框、datagridview 等控件的 Windows 窗体应用程序。这些控件允许用户使用剪贴板,即剪切/复制和粘贴文本。也可以删除文本(与剪贴板无关)。

我的应用程序有一个菜单栏,其中包含一个包含剪切/复制/粘贴/删除项目的编辑项目,以及一个包含这些项目的工具栏。如何根据具有焦点的控件的状态正确启用/禁用这些项目?

我正在寻找一种通用的方式,即我寻找一种我曾经做过的实现,并且可以在将来独立于我的应用程序将使用的控件重用。

4

2 回答 2

3

没有用于从 Windows 窗体控件获取剪切/复制/粘贴信息的通用接口或方法集。

我建议您最好的方法是为每种类型的控件创建一个包装类。然后,当您想要更新菜单状态时,您将获得当前控件的焦点并为其创建适当的包装器。然后您向该包装器询问您需要的状态信息。这样,您只需为您使用的每种类型的控件创建一个包装器实现。开始有点痛苦,但其他时候你只需要添加你遇到的新控件。

剪贴板信息要容易得多,因为您可以询问剪贴板单例是否有数据以及它是什么类型。然后,您仍然需要询问目标控件是否可以接受该类型的信息,因此仍然需要做额外的工作。

于 2008-09-18T13:08:41.793 回答
0

为每个启用/禁用组创建一个阵列。将控件添加到数组中(当然它必须是正确的类型,例如 Object 或 Any 等,具体取决于您使用的编程语言)。然后启用,禁用只需循环遍历数组并为每个控件调用启用/禁用方法或函数。同样,根据您可能需要回退的语言。

于 2008-09-18T13:06:02.283 回答