2012-04-21 12 views
6

Ho un ContextMenuStrip che allego a diversi controlli. Ha gli elementi {Aggiungi, Rimuovi, Modifica}. Quando un utente fa clic con il pulsante destro del mouse su uno dei miei controlli casella di riepilogo (che fa apparire questo menu di scelta rapida) e seleziona "Aggiungi", come posso derivare il controllo listbox dal riferimento ToolStripMenuItem che viene passato?Trova controllo parent di ToolStripMenuItem

private void OnAddEntry(object sender, EventArgs e) 
    { 
     // Example: ????? 
     ListBox lb = sender.Parent; 
    } 
+0

ListBox lb = ((ListBox) sender.Parent); o forse ListBox lb = ((ListBox) sender.Parent.Parent); –

+0

Hai provato Spy ++? –

risposta

14

Mark, provate questo:

((ContextMenuStrip)(((ToolStripMenuItem)sender).Owner)).SourceControl 
+1

se lo lanci su ListBox, allora funziona! – MarkP

+0

Attento quando si usano le scorciatoie da tastiera, SourceControl può quindi essere nullo. – John

1

Immagino che si possa risalire la catena dei genitori finché non si trova la casella di riepilogo.

Potrebbe essere possibile accelerare utilizzando la proprietà OwnerItem per ottenere direttamente la struttura.

È sempre possibile impostare il tag dell'articolo nella casella di riepilogo e quindi utilizzarlo come richiesto.

Problemi correlati