1. 程式人生 > >關於給Winform的ListView控制元件新增右鍵選單的問題

關於給Winform的ListView控制元件新增右鍵選單的問題

想要在listView上面右鍵取得如下圖所示的效果:即 滑鼠右鍵點選內容區和列標題時彈出不同的選單項。

  

首先,新增兩個ContextMenuStrip,即contextMenuStrip1 和 contextMenuStrip2,並設定好相應的選單項。
然後,就可以利用listView1.ContextMenuStrip 屬性,這個屬性指定選單1,在右擊列標題、內容區、空白區,都會彈出。
最後,需要做的就是,在右擊內容區的時候,換個選單2。當選單2關閉後,再把listView1.ContextMenuStrip 設定回選單1。
如果需要控制空白區彈出的選單,可另外使用MouseUp事件。下面貼出程式碼供大家參考:
public Form1()
{
   InitializeComponent();
   listView1.ContextMenuStrip = contextMenuStrip2;

   contextMenuStrip2.Closed += new ToolStripDropDownClosedEventHandler(contextMenuStrip2_Closed); } 

void contextMenuStrip2_Closed(object sender, ToolStripDropDownClosedEventArgs e) {    listView1.ContextMenuStrip = contextMenuStrip1; } 

private void listView1_MouseClick(object sender, MouseEventArgs e) {    if (e.Button == MouseButtons.Right)    {        listView1.ContextMenuStrip = null;        contextMenuStrip2.Show(listView1, e.Location);        MessageBox.Show("MouseButton Right Clicked");    } }

但是 具體問題還要具體分析,可根據需要稍作修改。