我的 DataGridView 带有 ContextMenuStrip 。 ContextMenuStrip的默认行为是自动关闭 - 即立即关闭与其交互的用户。我已经将其关闭以允许多个用户交互(这是我想要的),但除此之外,我真正需要的是上下文菜单随后关闭用户点击其自身之外的任何地方。
用户点击的空间可能直接在表单上,也可能在子控件(或孩子的孩子等)上。然而,无论如何,我希望整齐地捕获'click away'事件,从而关闭ContextMenuStrip。
非常感谢任何想法。
塔米姆。
答案 0 :(得分:6)
只需在ContextMenuStrip的 LostFocus
事件中关闭它。
将AutoClose属性设置回 true 并处理Closing
事件。仅当CloseReason的ToolStripDropDownClosedEventArgs属性等于ItemClicked时才取消关闭。
答案 1 :(得分:0)
您可以关注这些人在this SO question中所做的事情。我不确定这是否会导致ui闪烁,但它可能会让你做你想做的事情。
答案 2 :(得分:0)
一般来说,我不鼓励标准控件的非标准行为......所以这真的是边缘。我可能正在寻找一种方法来重构UI,使其对用户更直观,用户希望在选择其中一个菜单项后关闭自己的上下文菜单。
在这种情况下,例如,如果要修改网格中行的属性,则可以使用从上下文菜单中打开的“属性(模态)”对话框;或者,实现类似于Visual Studio Properties窗口,它根据选择上下文自动更新。与简单的上下文菜单相比,这两种解决方案都更加灵活,可以为用户提供更好的反馈。