2009-11-14 118 views
0

我有一個列表框,它填充了項目,我想知道如何:添加右鍵/上下文菜單列表框項目在C#

  1. 當你在列表框中點擊右鍵,該的RightClicked項目將被選中,
  2. 一個右鍵菜單將有幾個項目被顯示..
  3. 當你點擊任何項目,相應的空白將被觸發的
  4. ...

在此先感謝您的幫助和代碼ex請給我點心!

+0

「一相應的空白將被觸發「:這是什麼意思?我認爲你的意思是根據用戶選擇哪個菜單項來觸發一個方法/程序。 – BillW 2009-11-14 09:03:06

+1

wpf或winforms? – Peter 2009-11-14 09:25:45

+0

這是一個有用的問題;它只是需要一些小的編輯。 – JYelton 2010-05-18 19:03:10

回答

0

首先,您需要訂閱ListBox.MouseClick事件。你將能夠確定按下了哪個按鈕和光標座標。然後,使用ListBox.IndexFromPoint方法來查找點擊的項目。您可以使用ListBox.SelectedIndex屬性來選擇它。要顯示上下文菜單,請使用ContextMenu或ContextMenuStrip類。有關上下文菜單的其他文檔可以在MSDN

+3

一個MouseClick事件不會被上下文點擊觸發一個ListBox。 – BillW 2009-11-14 09:21:28

4

這對我來說就像是一個「家庭作業」問題,所以我會回答(我希望)給你幾個指針來解決這個問題。

一期

  1. 創建一個示例項目,一個ListBox
  2. 定義鼠標點擊,MouseDown事件處理程序,並單擊事件。
  3. 把一個Console.WriteLine(「一些適當的文本」);語句,以便您可以查看Visual Studio中的輸出窗口並查看調用了哪個事件處理程序。

...

二期

  • 運行測試程序並觀察報告什麼事件鼠標左鍵向下和右的區別 - 鼠標向下(假設您的環境將上下文點擊設置爲鼠標右鍵......這可能不適用於所有人)。

  • 專注於您可以通過上下文單擊進行截取的一個事件。

  • 將上下文菜單添加到測試項目,並將該上下文菜單設置爲ListBox的上下文菜單。

  • 驗證您現在可以右鍵點擊列表框和上下文菜單中就會出現一個項目,但該事件仍是處理案件被處理程序YOU「發現」,在步驟2中

  • 現在去通過列表框的所有事件處理程序,並找出哪一個可以用來檢測,給定列表框中的某個位置,哪個列表項被「命中」。

  • 一旦你可以確定右鍵單擊哪個List Item,並且你知道你的上下文菜單正在工作,你只有確保右鍵單擊的List Item被選中的問題,這很容易。

  • 想象一下,你自己會教會你幾個非常有用的東西,你稍後可以在其他控件編程中使用。

    好運,比爾

    0

    1.當你右擊在列表框中,是正確的點擊項將被選中

    2.A右鍵菜單將有幾個項目被顯示..

    private void listBoxNode_MouseUp(object sender, MouseEventArgs e) 
        { 
         int location = listBoxNode.IndexFromPoint(e.Location); 
         if (e.Button == MouseButtons.Right) 
         { 
          listBoxNode.SelectedIndex = location;    //Index selected 
          contextMenuStrip1.Show(PointToScreen(e.Location)); //Show Menu 
         } 
        } 
    

    3.當你點擊任何項目,相應的空白將被觸發的..

    private void showDetailsToolStripMenuItem_Click(object sender, EventArgs e) 
         { 
           //put your code here after clicking 
           //on items in context menu 
         } 
    
    相關問題