带和不带选定网格的上下文菜单条控件

Context Menu Strip Control With and Without Selected Grid

我真的不知道要搜索什么,所以我就问这个:

我有一个链接到列表视图的上下文菜单条,

我需要的是当我在网格列表视图中右键单击突出显示的变量时,将显示项目的菜单,并且 当我右击空白网格时,会显示网格设置。

我怎样才能做到这一点?

我怀疑用户会欣赏你的方法;您计划通过同一操作显示 2 个不同的菜单 - 单击一次。如何获得一个菜单或另一个菜单可能并不明显。此外,不清楚为什么 "Settings" 或主菜单需要对他们隐藏。

为什么不是 2 个菜单,而是 1 个菜单和 2 个子菜单,以便于找到它们?

Private Sub myLV_MouseUp(sender...
    If (e.Button = Windows.Forms.MouseButtons.Right) Then

        lvCMS.Items("ItemMenu").Enabled = (myLV.SelectedItems.Count > 0)

        ' show (may need if there ARE 2 menus)
        lvCMS.Show(myLV.PointToScreen(New Point(e.X, e.Y)))

    End If
End Sub

LV 会自己显示指定的菜单,但如果有 2 个,则可以 want/need 手动显示,如图所示。通过使用 MouseUp 事件,LV 已经对 MouseDn 做出反应并更改了所选项目。菜单方面唯一不同的是 ItemMenu 是否启用。

单击空白区域可取消选择项目。除非一个按钮做同样的事情,否则很难取消选择一个项目,因为空白区域几乎可以 nonexistent:

只有橙色部分是空格子,再添加一项填充底部并产生滚动条,然后有none。这就是为什么单独的菜单和特殊的条件集可能不是一个好主意的部分原因。