C# 如何实现右键单击listView中的项目弹出菜单 请各位高手指教,怎样实现右键单击listView中的项目弹出菜单? 比如,listView中有一个word文档我右键单击它,弹出的菜单和在平常系统中点击右键弹出的菜单是一样的,里面有复制、删除打开方式,属性等等。怎样能用最简单的方法实现,比如直接用系统的功能不用自己写的。。请各位帮帮忙。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过设置ListView的ContextMenuStrip为ListView指定右键菜单。 估计楼主初学。3楼的说了 通过设置ListView的ContextMenuStrip为ListView指定右键菜单。补充一下 新建窗体 拖动一个ListView到窗体上 然后拖动一个ContextMenuStrip到窗体上ContextMenuStrip 即为你的菜单修改 ListView的ContextMenuStrip为ListView ContextMenuStrip不能教,你拖上去一看就会用了,不会的话看下MSDN 呵呵 我是初学,我想大家没理解我的意思 拖ContextMenuStrip到窗体上 是设置窗体的右键菜单吧 我是想在 ListView中的项目上添加右键菜单呀怎么实现呢? private void listView1_MouseClick(object sender, MouseEventArgs e) { if (this.listView1.SelectedItems > 0) { if (e.Button == MouseButtons.Right) { foreach (ListViewItem item in this.listView1.SelectedItems) { ... } } } } ListView有一个ContextMenuStrip属性,将该属性设为你拖的ContextMenuStrip控件。 我按照你们说的试了一下。 结果是我在listView上任意地方点击右键都出我自定义的Menu 我只想在项目上点击才出menu 我现在有点晕不知道咋办了 我现在根据你这段代码,理解了一些 不知道对不?不会的话 给我详细讲一下 谢谢你们我是想,是不是在foreach 中判断是不是鼠标点在了项目上,如果是就把ListView的ContextMenuStrip属性设为 拖上去的ContextMenuStrip控件 是这样的么? 那你就在你拖上去的ContextMenuStrip控件的菜单项下面去判断当前有没有选中项目。 那就不要设置ListView的ContextMenuStrip属性了,拖上去一个ContextMenuStrip,写好菜单项,写以下代码:private void listView1_MouseClick(object sender, MouseEventArgs e){ if (e.Button == MouseButtons.Right) { if (this.listView1.SelectedItems.Count > 0) { this.contextMenuStrip1.Show(this,e.Location); } else { this.contextMenuStrip1.Hide(); } }} 再给你简化一下:private void listView1_MouseClick(object sender, MouseEventArgs e){ if (e.Button == MouseButtons.Right && this.listView1.SelectedItems.Count > 0) { this.contextMenuStrip1.Show(this, e.Location); }}注意,这是ListView的鼠标点击事件。 我初学C# 所以不能马上理解大家所说的。用过C# 这类面向对象语言的 只要一点,就通。 哎~~~我在努力的学习中。呵呵。我太菜了。 用过C# 这类面向对象语言的 只要一点,就通。 哎~~~我在努力的学习中 请大家见谅 谢谢大家热心的帮助 那在哪显示呢?this.contextMenuStrip1.Show(this, e.Location); private void contentMenu_Opening(object sender, CancelEventArgs e) { if (listView.SelectedItems.Count == 0) { e.Cancel = true; return; } } private void listView1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { ListViewItem xy = listView1.GetItemAt(e.X, e.Y); if (xy != null) { Point point = this.PointToClient(listView1.PointToScreen(new Point(e.X, e.Y))); this.contextMenuStrip1.Show(this, point); } } } cookie无法存储 dataGridView1中获取选中的行的行号 HELP ME! 什么是宿主应用程序? 在vs2005里面,treeview如何排序设置? 如何实现c#多线程读文件 设计状态窗体的大小不能改变,怎么回事啊??? 请教一个考勤,门禁刷卡的数据交换问题? 请问如何在vb中调用web服务,并且向web发送附件,和从web服务中接收附件,高分奉上!! 求大神把PHP的帮我翻译成C#感激不尽啊 SqlDataReader.NextResult问题 C# GDI+分享帖(回帖留邮箱的送代码和文档)
补充一下 新建窗体 拖动一个ListView到窗体上 然后拖动一个ContextMenuStrip到窗体上ContextMenuStrip 即为你的菜单修改 ListView的ContextMenuStrip为ListView
不能教,你拖上去一看就会用了,不会的话看下MSDN
{
if (this.listView1.SelectedItems > 0)
{
if (e.Button == MouseButtons.Right)
{
foreach (ListViewItem item in this.listView1.SelectedItems)
{
...
}
}
}
}
将该属性设为你拖的ContextMenuStrip控件。
我现在根据你这段代码,理解了一些 不知道对不?不会的话 给我详细讲一下 谢谢你们
我是想,是不是在foreach 中判断是不是鼠标点在了项目上,如果是就把ListView的ContextMenuStrip属性设为 拖上去的ContextMenuStrip控件 是这样的么?
{
if (e.Button == MouseButtons.Right)
{
if (this.listView1.SelectedItems.Count > 0)
{
this.contextMenuStrip1.Show(this,e.Location);
}
else
{
this.contextMenuStrip1.Hide();
}
}
}
{
if (e.Button == MouseButtons.Right && this.listView1.SelectedItems.Count > 0)
{
this.contextMenuStrip1.Show(this, e.Location);
}
}注意,这是ListView的鼠标点击事件。
this.contextMenuStrip1.Show(this, e.Location);
{
if (listView.SelectedItems.Count == 0)
{
e.Cancel = true;
return;
}
}
{
if (e.Button == MouseButtons.Right)
{
ListViewItem xy = listView1.GetItemAt(e.X, e.Y);
if (xy != null)
{
Point point = this.PointToClient(listView1.PointToScreen(new Point(e.X, e.Y)));
this.contextMenuStrip1.Show(this, point);
}
}
}