不要在选择某些项目时关闭ContextMenuStrip

bar*_*rry 14 .net c# user-interface contextmenustrip

在选择/检查某些项目后,是否可以打开ContextMenuStrip?

我打算使用一个简单的ContextMenuStrip来设置过滤器(这样我可以在菜单中使用相同的过滤器或作为右键单击选项).

菜单列出了许多项目,我希望用户能够使用基本检查功能选择项目.选择完成后,用户可以单击"激活过滤器"选项,也可以单击菜单外部以激活或取消过滤器.

在选择/单击事件上,菜单通常会关闭.是否可以在点击事件中保持菜单打开?

小智 25

如果未来的程序员想知道如何做到这一点,这就是我想到的.如果单击任何项​​目,则不会关闭上下文菜单.如果关闭原因是itemclicked,则创建上下文菜单条关闭事件并设置if语句以取消关闭事件.

private void contextMenuStrip_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
    if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked)
        e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)


小智 3

要防止单击某项时上下文菜单关闭,请执行以下操作。

在 ContextMenuItems 的 mousedown 事件中,将标志设置为 false,然后在上下文菜单的关闭事件中将其设置回 true。

例子:

Private blnClose As Boolean = True

Private Sub MoveUpToolStripMenuItem_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MoveUpToolStripMenuItem.MouseDown

     blnClose = False

End Sub

Private Sub ContextMenuStrip1_Closing(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripDropDownClosingEventArgs) Handles ContextMenuStrip1.Closing

     e.Cancel = Not blnClose
     blnClose = True

End Sub
Run Code Online (Sandbox Code Playgroud)

  • -1 您选择的答案不是您正在编码的语言,并且建议使用全局变量???这里还有更多相关答案。 (6认同)