右键单击listView时弹出contextMenu1
右键单击listView中的某项时弹出contextMenu2

解决方案 »

  1.   

    如上所示
    实际上我想实现的效果就和WindowXP中“我的电脑”一样
    例如:“我的电脑”空白处单击右键和右键单击硬盘盘符时,右键弹出的contextMenu就不一样请问该如何实现!
    谢谢
      

  2.   

    右键单击listView中的某项时弹出contextMenu2,只实现这个没什么问题...第一个似乎有点难了...学习...
      

  3.   

    树的方法, 供参考:
    private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEentArgs e)
    {
           if (treeView1.GetNodeAt(e.X, e.Y)==null)
               treeView1.SelectedNode.Checked=false;
    if (treeView1.GetNodeAt(e.X, e.Y)!=null)
    treeView1.SelectedNode=treeView1.GetNodeAt(e.X, e.Y);
             if ((treeView1.GetNodeAt(e.X, e.Y)!=null && e.Button == MouseButtons.Right          && treeView1.SelectedNode.ForeColor==Color.Blue  &&      treeView1.SelectedNode.IsSelected==true) || (treeView1.GetNodeAt(e.X, e.Y)!=null && e.Button == MouseButtons.Right && treeView1.SelectedNode.ForeColor==Color.Green  && treeView1.SelectedNode.IsSelected==true))

                    treeView1.ContextMenu =this.bdcontextMenufile;
    treeView1.SelectedNode.Checked=true; }
    if (treeView1.GetNodeAt(e.X, e.Y)!=null && e.Button == MouseButtons.Right && treeView1.SelectedNode.ForeColor!=Color.Blue && treeView1.SelectedNode.ForeColor!=Color.Green && treeView1.SelectedNode.IsSelected==true)

    treeView1.ContextMenu =this.bdcontextMenunode;
    treeView1.SelectedNode.Checked=true; }
    //if (treeView1.GetNodeAt(e.X, e.Y)!=null && e.Button == MouseButtons.Right && treeView1.SelectedNode.ForeColor==Color.Green && treeView1.SelectedNode.IsSelected==true)
    //{ 
    // treeView1.ContextMenu =this.tzxgtzdmenu;
    // treeView1.SelectedNode.Checked=true; //}
                   
    } private void treeView1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    // If the right mouse button was clicked and released,
    // display the context menu assigned to the TreeView. 
    if(e.Button == MouseButtons.Right && treeView1.SelectedNode.ForeColor!=Color.Blue  && treeView1.SelectedNode.Checked!=false && treeView1.SelectedNode.IsSelected==true )
    { //treeView1.ContextMenu =this.bdcontextMenunode;
    treeView1.ContextMenu.Show(treeView1, new Point(e.X, e.Y) );      
    }
    if(e.Button == MouseButtons.Right && treeView1.SelectedNode.ForeColor==Color.Blue  && treeView1.SelectedNode.Checked!=false && treeView1.SelectedNode.IsSelected==true)
    {
    treeView1.ContextMenu.Show(treeView1, new Point(e.X, e.Y) );      
    }
    if(e.Button == MouseButtons.Right && treeView1.SelectedNode.ForeColor==Color.Green  && treeView1.SelectedNode.Checked!=false && treeView1.SelectedNode.IsSelected==true)
    {
    treeView1.ContextMenu.Show(treeView1, new Point(e.X, e.Y) );      
    }
       
    }
      

  4.   

    先判断listView.SelectedItems 是否为空在MouseClick事件中 先判断 e.Button是否等于MouseButtons.Right
    等于的话 显示contextMenu2
      

  5.   

    private void v_View_MouseClick(object sender, MouseEventArgs e)
            {
               if (e.Button == MouseButtons.Right)
                {
                  
                  this.v_contextMenu.Show( Cursor .Position.X+10 ,Cursor .Position .Y+10 );
                   
                }
            }        private void v_View_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right && e .Clicks==2)
                {
                    this.F_contextMenu.Show(Cursor.Position.X + 10, Cursor.Position.Y + 10);
                }
                   
            }