C#中listview弹出菜单的两种方法问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 14:43:32
菜单名为contextMenuStrip1,方法1中事先在listview的contextMenuStrip属性中设置好了contextMenuStrip1,
而方法2中并没有设置好,需要在代码中设置

方法1:
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
// 获取鼠标坐标,并转换成 ListView 窗口的客户区坐标
.........................
// 判断鼠标坐标处,是否有 ListViewItem ,如没有,则取消弹出,有则弹出菜单
.........................
}
方法2:
private void listView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// 获取鼠标坐标,并转换成 ListView 窗口的客户区坐标
.........................
// 判断鼠标坐标处,是否有 ListViewItem ,如没有,则取消弹出,有则弹出菜单
.........................
}
}
高手请解决~
对啊,就是想点到信息后对出菜单,属性中是可以设置listview和菜单相连,但连起来后,只要在listview里随便点都会出菜单.
如果用代码设置"listview和菜单相连",代码该如何写呢

"那就不弹出菜单 "你说的这句,就是无法实现,怎么弄啊

啥问题?

看上去像是要实现listview右键菜单

了解了一下,你如果只是在listview的contextMenuStrip属性中设置好了contextMenuStrip1,那么只要是在listview范围内,点就会出现菜单,你是想必须要点到正主上才出菜单

all right

Control.MousePosition这个用来获取鼠标位置

但是不用通过判断坐标这么麻烦吧

应该可以获取当前点击的listviewitem的index

如果是-1,那么就是没选中了,那就不弹出菜单

如果选中了,再根据选中的index弹出相应的菜单

顺便把获取listviewitem坐标的方法告诉你

listView1.GetItemAt(X,Y)

通过X,Y坐标定位,这里X,Y可以用

Control.MousePosition获取的坐标判断

MSDN是好东西,多看多搜

呃,没仔细研究,那就用你的第二种办法,满足条件再把contextmenustrip加上去

在listview的contextMenuStrip属性中设置好了contextMenuStrip1, 即可实现