请各位高手指教,怎样实现右键单击listView中的项目弹出菜单? 比如,listView中有一个word文档我右键单击它,弹出的菜单和在平常系统中点击右键弹出的菜单是一样的,里面有复制、删除打开方式,属性等等。怎样能用最简单的方法实现,比如直接用系统的功能不用自己写的。。请各位帮帮忙。谢谢!

解决方案 »

  1.   

    通过设置ListView的ContextMenuStrip为ListView指定右键菜单。
      

  2.   

    估计楼主初学。3楼的说了  通过设置ListView的ContextMenuStrip为ListView指定右键菜单。
    补充一下 新建窗体 拖动一个ListView到窗体上 然后拖动一个ContextMenuStrip到窗体上ContextMenuStrip 即为你的菜单修改 ListView的ContextMenuStrip为ListView
      

  3.   

    ContextMenuStrip
    不能教,你拖上去一看就会用了,不会的话看下MSDN
      

  4.   

    呵呵 我是初学,我想大家没理解我的意思  拖ContextMenuStrip到窗体上 是设置窗体的右键菜单吧 我是想在 ListView中的项目上添加右键菜单呀怎么实现呢?
      

  5.   

            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)
                        {
                            ...
                        }
                    }
                }
            }
      

  6.   

    ListView有一个ContextMenuStrip属性,
    将该属性设为你拖的ContextMenuStrip控件。
      

  7.   

    我按照你们说的试了一下。 结果是我在listView上任意地方点击右键都出我自定义的Menu 我只想在项目上点击才出menu  我现在有点晕不知道咋办了
      

  8.   


    我现在根据你这段代码,理解了一些 不知道对不?不会的话 给我详细讲一下 谢谢你们
    我是想,是不是在foreach 中判断是不是鼠标点在了项目上,如果是就把ListView的ContextMenuStrip属性设为 拖上去的ContextMenuStrip控件 是这样的么?
      

  9.   

    那你就在你拖上去的ContextMenuStrip控件的菜单项下面去判断当前有没有选中项目。
      

  10.   

    那就不要设置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();
            }
        }
    }
      

  11.   

    再给你简化一下: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的鼠标点击事件。
      

  12.   

    我初学C# 所以不能马上理解大家所说的。用过C# 这类面向对象语言的 只要一点,就通。  哎~~~我在努力的学习中。呵呵。我太菜了。 用过C# 这类面向对象语言的 只要一点,就通。  哎~~~我在努力的学习中 请大家见谅 谢谢大家热心的帮助 
      

  13.   

    那在哪显示呢?
    this.contextMenuStrip1.Show(this, e.Location);
      

  14.   

            private void contentMenu_Opening(object sender, CancelEventArgs e)
            {
                if (listView.SelectedItems.Count == 0)
                {
                    e.Cancel = true;
                    return;
                }
            }
      

  15.   

     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);
                    }
                }
            }