Come posso determinare il genitore di un oggetto ToolStripMenuItem? Con un normale MenuStrip tutto ciò che devi fare è usare la proprietà Parent, ma non sembra che ToolStripMenuItem abbia quella proprietà. Ho un ToolStripDropDownButton che ha un paio di ToolStripMenuItems e mi piacerebbe essere in grado di individuare il genitore di quelli programmaticamente.C# - Ottieni padre di ToolStripMenuItem
10
A
risposta
13
Prova la proprietà OwnerItem.
+5
Come commentato contro la domanda ... questo funziona solo per i menu costruiti come una singola unità. Impostando la proprietà DropDown su un altro ContextMenu "si interrompe" la gerarchia, ad esempio, è possibile solo raggiungere il ContextMenu impostato. – AndrewD
3
Prova questo .....
ToolStripMenuItem t = (ToolStripMenuItem)sender;
ContextMenuStrip s = (ContextMenuStrip)t.Owner;
MessageBox.Show(s.SourceControl.Name);
0
Ecco ciò che si cerca
private void ContextMenuStrip_Opening(object sender, CancelEventArgs e)
{
contextMenuStrip1.Tag = ((ContextMenuStrip)sender).OwnerItem;
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
ToolStripMenuItem senderItem = (ToolStripMenuItem)sender;
var ownerItem = (ToolStripMenuItem)((ContextMenuStrip)senderItem.Owner).Tag;
}
5
questo funziona per me:
ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
ToolStrip toolStrip = menuItem.GetCurrentParent();
... Da questo, si può escogitare un metodo per portarti da un ToolStripMenuItem casuale al livello più alto come:
public static class ToolStripItemExtension
{
public static ContextMenuStrip GetContextMenuStrip(this ToolStripItem item)
{
ToolStripItem itemCheck = item;
while (!(itemCheck.GetCurrentParent() is ContextMenuStrip) && itemCheck.GetCurrentParent() is ToolStripDropDown)
{
itemCheck = (itemCheck.GetCurrentParent() as ToolStripDropDown).OwnerItem;
}
return itemCheck.GetCurrentParent() as ContextMenuStrip;
}
}
Problemi correlati
- 1. Invoke ToolStripMenuItem
- 2. Trova controllo parent di ToolStripMenuItem
- 3. Ottieni valore attributo padre in sass
- 4. Ottieni il nodo padre di un figlio in WPF C# TreeView
- 5. Ottieni la classe padre del membro in MouseEvent
- 6. Ottieni il nome della classe padre da bambino con ES6?
- 7. Ottieni tag padre immediato con BeautifulSoup in Python
- 8. menu di scelta padre?
- 9. Ottieni l'indirizzo di un'istruzione in C/C++
- 10. Come accedere all'oggetto padre in C#
- 11. C++ Polymorphism: dalla classe padre al figlio
- 12. Proprietà ContextMenuStrip.Owner null durante il recupero da Nested ToolStripMenuItem
- 13. Ottieni l'indirizzo email di Outlook tramite C#
- 14. Ottieni identificatori di sistema univoci in C#
- 15. Ottieni l'indirizzo vtable in C#?
- 16. Ottieni il percorso Assembly C#
- 17. Ottieni valore dalla ricerca C#
- 18. C#: ottieni dimensioni desktop complete?
- 19. C# Ottieni immagine utente (Avatar)
- 20. Ottenere classe di elemento padre
- 21. Padre Flexbox overflow padre con altezza massima specificato su IE
- 22. Come posso impedire a ToolStripMenuItem disabilitato di mostrare un bordo sopra il mouse?
- 23. Ottieni il nome classe del controllore Vista padre in iPhone Navigation push
- 24. Ottieni proprietà schema padre per la convalida con Mongoose e MongoDB
- 25. getResource con riferimento directory padre
- 26. ptrace'ing del processo padre
- 27. Maven relazione padre-figlio
- 28. jQuery trovare form padre
- 29. Centro JDialog sul padre
- 30. Knockoutjs ottiene oggetto padre
possibile duplicato di [C# - Convertire il codice MenuStrip in ToolStrip] (http://stackoverflow.com/questions/4572381/c-convert-menustrip-code-to-strips) –
C'è un ['Proprietario'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.owner.aspx), ['OwnerItem'] (http://msdn.microsoft.com/en-us/ library/system.windows.forms.toolstripitem.owneritem.aspx) e ['Parent'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.parent.aspx) proprietà esposte dalla classe ['ToolStripMenuItem'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmenuitem.aspx). Do * none * di questi lavori per te? È difficile capire cosa stai cercando di realizzare e perché non funziona. –
@Hans, non è un duplicato ma piuttosto una domanda più precisa per arrivare alla radice del problema. E quella domanda non mi ha portato da nessuna parte, anche tu hai provato a rispondere senza successo e poi hai cancellato la tua risposta. – user