2012-04-21 18 views
6

Tengo una ContextMenuStrip que adjunto a varios controles. Tiene los elementos {Agregar, Eliminar, Editar}. Cuando un usuario hace clic derecho en uno de mis controles de listbox (que aparece en este menú contextual) y selecciona 'Add', ¿cómo puedo obtener el control listbox de la referencia ToolStripMenuItem que se pasa?Buscar el control principal de ToolStripMenuItem

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

ListBox lb = ((ListBox) sender.Parent); o tal vez ListBox lb = ((ListBox) sender.Parent.Parent); –

+0

¿Has probado Spy ++? –

Respuesta

14

Marcos, intente esto:

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

si lo lanzas a ListBox, ¡entonces esto funciona! – MarkP

+0

Cuidado al usar atajos de teclado, SourceControl puede ser nulo. – John

1

supongo que puede ir en la cadena de los padres hasta que encuentre el cuadro de lista.

Puede acelerar esto usando la propiedad OwnerItem para ir directamente a la tira de herramientas.

Siempre puede establecer la etiqueta del elemento en el cuadro de lista y luego simplemente usarlo como se requiera.

Cuestiones relacionadas