【问题标题】:Context Menu Strip Control With and Without Selected Grid带有和不带有选定网格的上下文菜单条控件
【发布时间】:2015-06-27 02:52:58
【问题描述】:

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

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

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

我怎样才能做到这一点?

【问题讨论】:

  • 听起来有两个上下文菜单,但请解释一下highlighted variable in the grid list view是什么或意味着什么
  • 我的意思是选择的项目,当我在列表视图中选择项目并按右键单击时,它应该显示与项目相关的复制粘贴内容等内容,并且当没有突出显示的项目时,上下文菜单应该显示列表视图的菜单,如列、行..
  • 鼠标按下:If myLV.SelectedItems.Count > 0 then ...display item menu Else ...display system menu End If。请注意,评论中的问题发生了变化……LV也不关心按下哪个鼠标按钮来选择一个项目,让用户取消选择项目以进入不同的菜单是残酷的

标签: vb.net listview contextmenustrip


【解决方案1】:

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

而不是 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 个,您可能希望/需要手动显示它,这会显示出来。通过使用MouseUp 事件,LV 已经对MouseDn 做出反应并更改了所选项目。唯一不同的菜单是 ItemMenu 是否启用。

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

只有橙色区域是空网格,再添加一项填充底部并导致滚动条没有。这就是为什么单独的菜单和一组特殊的条件可能不是一个好主意的部分原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多