图一:
图二:
图三:
工具栏拖一个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; } }