2

我有一个带有ContextMenuStrip的DataGridView。ContextMenuStrip 的默认行为是自动关闭——即在用户与之交互时立即关闭。我已将其关闭以允许多个用户交互(这是我想要的),但除此之外,我真正需要的是上下文菜单随后在用户单击其自身之外的任何位置时关闭。

用户点击离开的空间可能直接在表单上,​​或者在子控件(或子控件的子控件等)上。然而无论如何,我希望巧妙地捕捉“点击离开”事件,从而关闭 ContextMenuStrip。

任何想法都将非常感激地接受。

塔米姆。

4

3 回答 3

7

只需在LostFocusContextMenuStrip 上的事件中关闭它。

AutoClose属性设置回true并处理该Closing事件。仅当ToolStripDropDownClosedEventArgs的CloseReason属性等于ItemClicked时才取消关闭。

于 2009-10-08T17:21:41.460 回答
0

您可以关注这些人在这个 SO question中所做的事情。我不确定这是否会导致 ui 闪烁,但它可能会让你做你想做的事。

于 2009-10-08T17:07:48.633 回答
0

一般来说,我不鼓励标准控件的非标准行为......所以这真的是临界点。我可能会寻找一种重构 UI 的方法,以使其对用户来说更直观,用户会期望上下文菜单在选择其中一个菜单项后自行关闭。

在这种情况下,如果您正在修改网格中一行的属性,例如,您可以使用从上下文菜单中打开的属性(模式)对话框;或者,实现类似于 Visual Studio 属性窗口的东西,它会根据选择上下文进行自我更新。与简单的上下文菜单相比,这两种解决方案都更加灵活,并且会为用户提供更好的反馈。

于 2009-10-08T17:35:15.397 回答