ContextMenuStrip兩種不同的添加事件的方法,及其差異,問題。

來源:互聯網
上載者:User
最近程式裡發現一個問題,在列表裡快顯功能表(ContextMenuStrip),並選擇某一項後,菜單一直顯示,並且一直等待菜單事件處理的完成,嚴重的是,有時候,即便功能表項目的事件完成了,菜單仍然不會自動關掉。切換程式後,菜單仍然顯示著,只有回到應用程式介面,再次用滑鼠點一下菜單所屬於的列表,菜單才消失掉。我把出現該問題的代碼寫法貼出來:

//公用部分
//declaration
private ContextMenuStrip contextMenuStrip ;
//initialization
this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);

this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.addToolStripMenuItem});
            this.contextMenuStrip1.Name = "contextMenuStrip";
            this.contextMenuStrip1.Size = new System.Drawing.Size(125, 76);

//寫法 - 1
//add ItemClicked event
contextMenuStrip.ItemClicked += new ToolStripItemClickedEventHandler(contextMenuStrip_ItemClicked);

private void contextMenuStrip_ItemClicked(object sender,ToolStripItemClickedEventArgs e)
{
      if(e.ClickedItem == addToolStripMenuItem)
      {
           Thread.Sleep(2000);
           MessageBox.Show("ok.");
      }
}

按照上面的寫法,在彈出的菜單中選擇一項後,在選擇後的執行過程中,菜單一直伴隨執行過程而顯示著,即便切換進程/應用程式,菜單一直都會顯示。

如果按照如下寫法,那麼上面的問題就不會出現了,一點菜單,菜單馬上消失,隨後執行功能表項目的處理過程。
寫法如下:
//寫法 - 2
addToolStripMenuItem.Click += new EventHandler(addToolStripMenuItem_Click);

private void addToolStripMenuItem_Click(object sender, EventArgs e)
{
      Thread.Sleep(2000);
      MessageBox.Show("ok.");
}

這個寫法,就是把菜單的事件加到菜單的每個項上,而上面的寫法是把菜單事件增加到菜單上,然後在該事件裡來判斷是那個功能表項目,然後再做處理。這就是兩種寫法的區別,顯然,寫法上的區別造成了菜單顯示上的區別,以及上一種寫法所存在的問題。在我本地的測試中,沒有發現菜單不能關閉的問題,但是在我們的產品上,卻發現了該問題,問題仍然在繼續尋找中。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.