Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net ContextMenuStrip上的条件关闭_Vb.net - Fatal编程技术网

Vb.net ContextMenuStrip上的条件关闭

Vb.net ContextMenuStrip上的条件关闭,vb.net,Vb.net,我与以下项目有关联: OpenToolStripMenuItem WrapToolStripMenuItem CopyToolStripMenuItem PasteToolStripMenuItem 其中WrapToolStripMenuItem具有复选框。其他物品没有。 因此,该项外观的代码如下所示: Private Sub WrapToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventAr

我与以下项目有关联:

OpenToolStripMenuItem
WrapToolStripMenuItem
CopyToolStripMenuItem
PasteToolStripMenuItem
其中WrapToolStripMenuItem具有复选框。其他物品没有。 因此,该项外观的代码如下所示:

Private Sub WrapToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WrapToolStripMenuItem.Click

    WrapToolStripMenuItem.Checked = Not WrapToolStripMenuItem.Checked
End Sub
我为ContextMenu找到了一些可行的解决方案,当他们试图关闭时,ContextMenu会保持菜单打开:

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

    If (e.CloseReason = ToolStripDropDownCloseReason.ItemClicked) Then
        e.Cancel = True
    End If
End Sub
所有这些都可以

奎斯汀是:
如何仅在ClickedItem为WrapToolStripMenuItem而非other时禁止关闭菜单?

如何在不使用诸如“lastpressedmenuitem”或类似的局部变量的情况下识别在关闭处理程序中单击的项目?

是的,您需要一个变量。它很难看,您必须在每个单击事件处理程序中设置它。让上下文菜单像用户熟悉的其他程序一样运行从来都不是一件错误的事情。他希望当他点击时菜单会关闭。正如我所看到的,局部变量不是在点击处理程序中,而是在每个鼠标向下处理程序中。好吧,如果我们有可能管理_closinghandler以取消关闭,那么菜单在单击后不可能被关闭。您会看到许多外国应用程序带有复选框、单选和切换按钮(或组),这些按钮不会在单击时关闭。它不能是局部变量,必须是表单类的字段。因此,它在事件之间保持其价值。好的,非常感谢您的解释。我成功地使它工作了。