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和菜单相连",代码该如何写呢

"那就不弹出菜单 "你说的这句,就是无法实现,怎么弄啊
展开
 我来答
yizusong
2008-02-15 · TA获得超过3045个赞
知道大有可为答主
回答量:4516
采纳率:0%
帮助的人:4482万
展开全部
啥问题?

看上去像是要实现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加上去
威嚎M
2008-02-15 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:142万
展开全部
在listview的contextMenuStrip属性中设置好了contextMenuStrip1, 即可实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式