winforms - contextMenuStrip - 点击即可关闭

时间:2009-10-08 17:01:25

标签: winforms events contextmenustrip

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

用户点击的空间可能直接在表单上,​​也可能在子控件(或孩子的孩子等)上。然而,无论如何,我希望整齐地捕获'click away'事件,从而关闭ContextMenuStrip。

非常感谢任何想法。

塔米姆。

3 个答案:

答案 0 :(得分:6)

只需在ContextMenuStrip的LostFocus事件中关闭它。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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