2013-08-17 46 views
1

我想從listView的屬性中使用MouseClick事件來處理鼠標左鍵和右鍵單擊。屬性中設置的ListView事件不起作用

不幸的是,事件似乎從未開火。 (雙擊事件創建一個屬性,輸入一些簡單的代碼並在第一行放置一個斷點)。同樣是在屬性(ItemSelectionChanged似乎工作,但我已經嘗試了其他事件不火列出了一些其他事件的真實

這裏是代碼補充說:

  • 在form.designer的.cs:

    this.listView1.MouseClick + =新System.Windows.Forms.MouseEventHandler(this.listView1_MouseClick);

  • 在form.cs:

    私人無效listView1_MouseClick(對象發件人,發送MouseEventArgs E) { 一些代碼 }

當我點擊列表視圖這種方法不會被調用。列表視圖位於堆棧頂部的選項卡內。

我想我可能會忘記一些非常基本的東西,但是什麼?

+0

@HansPassant非常感謝,就是這樣。你能否將你的評論置於一個問題中,以便我能接受它?順便說一句,有沒有一個參考,可以準確解釋每個事件何時被觸發? 我發現這個問題之前檢查msdn並嘗試「click」和「mouseclick」,並且在它聲明事件在單擊控件時引發而沒有提及任何限制。 – Sylverdrag

回答

2

ListView有點不同尋常,它的MouseClick事件不會觸發,除非您單擊視圖中的項目。解決方法是使用MouseDown或MouseUp事件。您通常更感興趣的ItemSelectionChanged事件順便說一句。如果您使用MouseDown/Up,您可能需要使用它的HitTest()方法來確切地查看所點擊的內容。

+0

謝謝。現在,我只是試圖爲每個項目和列表視圖創建一個上下文菜單,一般情況下,如果用戶點擊沒有項目的地點。 – Sylverdrag

+0

在你的問題中提及這些事情,所以我們不必猜測它。你確實需要MouseUp和HitTest。 –

+0

謝謝。我主要想知道爲什麼我的活動沒有開始。在「MouseDown」上使用「MouseUp」有什麼優勢?而對於HitTest,我打算使用「if(item.Bounds.Contains(new Point(e.X,e.Y)))」這似乎工作正常。 HitTest是否提供更多? – Sylverdrag

相關問題