C#中listview弹出菜单的两种方法问题
菜单名为contextMenuStrip1,方法1中事先在listview的contextMenuStrip属性中设置好了contextMenuStrip1,而方法2中并...
菜单名为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和菜单相连",代码该如何写呢
"那就不弹出菜单 "你说的这句,就是无法实现,怎么弄啊 展开
而方法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右键菜单
了解了一下,你如果只是在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加上去
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询