C# ListView如何在列头和内容绑定不同菜单

图一:

菜单

 

 

图二:

点击列头

 

 

图三:

点击内容

工具栏拖一个ContextMenuStrip控件,设置4项,后2项(打开,删除)隐藏Visible=false

 

4个菜单项分别命名为aaa,bbb,ccc,ddd

 

利用MouseDown事件,在鼠标单击列头时是不触发MouseDown事件的,这个正好可以利用

当单击的不是列头的时候,就不触发Opening事件

  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    bool mark = false;  //标记
    private void listView1_MouseDown(object sender, MouseEventArgs e)
    {
      //ListViewItem item = listView1.GetItemAt(e.X, e.Y);  //可以利用这个 当选中某一项时 菜单又不一样
      aaa.Visible = false;
      bbb.Visible = false;
      ccc.Visible = true;
      ddd.Visible = true;
      mark = true;
    }

    private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
    {
      if (!mark)
      {
        aaa.Visible = true;
        bbb.Visible = true;
        ccc.Visible = false;
        ddd.Visible = false;
      }
      mark = false;
    }
  }
原文地址:https://www.cnblogs.com/xuexian/p/3532123.html