2011-11-12 37 views
1

我有一個ContextMenu分配給兩個ListView s。如何知道它與哪個ListView一起使用,所以我可以應用正確的方法?我認爲sender在這裏很重要,但我該如何使用它?如何知道sender在這個時刻?如何識別右側哪個ListView?

private void contextMenuDokumentyDodaj_Click(object sender, EventArgs e) { 
    var dokumenty = new DocumentsGui(varKlienciID, varPortfelID); 
    dokumenty.Show(); 
    dokumenty.FormClosed += varDocumentsGui_FormClosed; 
} 
+0

這是什麼事? MSDN沒有列出ContextMenu的單擊事件 – sq33G

+0

ToolStripMenuItem – MadBoy

+0

什麼樣的對象包含您的「ToolStripMenuItem」?一個'ContextMenuStrip'? – Otiel

回答

1
+0

這很好,但我怎麼得到'System.Windows.Forms.ToolStripMenuItem'告訴我哪個ContextMenu使用它? – MadBoy

+0

...我以爲你說有兩個ListViews只有一個ContextMenu? – sq33G

+0

是的,我創建了ContextMenuStrip並將其分配給兩個列表視圖 – MadBoy

0

您是否嘗試過以下方法?

ListView listViewClicked = (ListView) sender; 

編輯(評論)之後

senderToolStripMenuItem,所以使用強制得到它,然後用GetCurrentParent方法來獲取ContextMenuStrip包含的項目,然後用SourceControl屬性獲取控件顯示菜單,如@ sq33G所示

ListView lv = ((ToolStripMenuItem) sender).GetCurrentParent().SourceControl; 

也許您還需要將GetCurrentParent返回值轉換爲ContextMenuStrip

+0

我沒有。我會嘗試它只是想找到一種方法來告訴隱藏在'sender'下的任何特定用法?如何判斷,因爲它被廣泛使用,所以更喜歡附加/一般的解釋。 – MadBoy

+0

@MadBoy:好的,回答你的問題,'發件人'是不同的,取決於點擊事件。如果演員工作,你會知道在這種情況下,'發件人'是點擊'ListView'。 – Otiel

+0

'附加信息:無法將類型爲'System.Windows.Forms.ToolStripMenuItem'的對象轉換爲鍵入'System.Windows.Forms.ListView'。因此,它實際上是不同的cast :-) – MadBoy