我有一个项目的列表视图,我希望这样当用户右键单击其中一个项目时,它会显示一个上下文,其中包含用户可以执行的一些选项或任务,但我希望它只是在点击一个项目时才带上contextmenustrip,而不是白色空间。有这个设置吗?
答案 0 :(得分:1)
你必须自己做。这有点痛苦。基本流程是......
MouseDown
的{{1}}个活动。使用鼠标坐标(e.X和e.Y)在ListView
上执行HitTest
。如果他们点击了一个项目而右键单击,则将contextMenuAllowed设置为true。ListView
的{{1}}个活动。如果是鼠标右键,则将contextMenuAllowed设置为false。MouseUp
/ ListView
的{{1}}个活动。如果contextMenuAllowed为false,则将e.Cancel设置为true并返回。这是停止实际打开的上下文菜单。这有点痛苦但很容易完成,用户永远不会知道差异。
这是一个例子,我刚刚创建了一个新的自定义控件,它将完全符合您的要求:
Opening
答案 1 :(得分:1)
有一种非常简单的方法可以做到这一点:
处理上下文菜单对象的Opening事件,并在事件处理程序内部进行检查,是否选择了ListView对象的任何项。如果不是这种情况,请取消该事件:
If myListView.SelectedItems.Count = 0 Then e.Cancel = True