2011-11-12 9 views
1

ListViewにはContextMenuが割り当てられています。どのようにそれが使用された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
ContextMenu.SourceControl 

はあなたのチケットです。

http://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenu.sourcecontrol.aspx

EDIT

いるContextMenuStrip、あなたが言いますか?

http://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenustrip.sourcecontrol.aspx

+0

いいですが、どのように 'System.Windows.Forms.ToolStripMenuItem'を使ってContextMenuを使ったか教えてください。 – MadBoy

+0

... 2つのListViewに対してContextMenuが1つしかないと言ったと思いましたか? – sq33G

+0

はい私はContextMenuStripを作成し、それを2つのリストビューに割り当てました – MadBoy

0

次は試しましたか?

ListView listViewClicked = (ListView) sender; 

EDIT(コメント後)

senderToolStripMenuItemので、それは、その項目を含むContextMenuStripを取得するGetCurrentParent方法を使用し得るためにキャストを使用し、その後、使用のように、コントロールをメニューに表示させるプロパティはSourceControlです@ sq33G

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

GetCurrentParentの戻り値をContextMenuStripにキャストする必要があるかもしれません。

+0

私はしませんでした。私はちょうどどのような特定の使用法のために '送信者'の下に何が隠れているのかを伝える方法を探していましたか?どのようにそれが普及しているかを伝える方法は、追加/一般的な説明を好むでしょう。 – MadBoy

+0

@MadBoy:質問に答えるには、「送信者」はクリックイベントによって異なります。キャストが動作すれば、この場合、 'sender'はクリックされた' ListView'であることがわかります。 – Otiel

+0

'追加情報: 'System.Windows.Forms.ToolStripMenuItem'型のオブジェクトを 'System.Windows.Forms.ListView'型にキャストすることができません。実際には異なるキャストです:-) – MadBoy

関連する問題