Wie kann ich das übergeordnete Element eines ToolStripMenuItem ermitteln? Mit einem normalen MenuStrip müssen Sie nur die Parent-Eigenschaft verwenden, aber ToolStripMenuItem scheint diese Eigenschaft nicht zu haben. Ich habe einen ToolStripDropDownButton, der ein paar ToolStripMenuItems hat, und ich möchte in der Lage sein, die Eltern dieser Programme programmatisch zu lokalisieren.C# - Get Parent von ToolStripMenuItem
10
A
Antwort
13
Versuchen Sie die OwnerItem Eigenschaft. diese
+5
Wie gegen die Frage kommentiert ... funktioniert dies nur für Menüs, die als eine Einheit konstruiert werden. Das Setzen der DropDown-Eigenschaft auf ein anderes ContextMenu "bricht" die Hierarchie, d.h. Sie können nur bis zum gesetzten ContextMenu gehen. – AndrewD
3
Versuchen .....
ToolStripMenuItem t = (ToolStripMenuItem)sender;
ContextMenuStrip s = (ContextMenuStrip)t.Owner;
MessageBox.Show(s.SourceControl.Name);
0
Hier ist, was Sie suchen mich
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
Dies funktioniert:
ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
ToolStrip toolStrip = menuItem.GetCurrentParent();
... von diesem, Sie kann eine Methode entwickeln, um Sie von einem zufälligen ToolStripMenuItem auf die oberste Ebene zu bringen:
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;
}
}
Verwandte Themen
- 1. ToolStripMenuItem Unterpunkte werden abgeschnitten
- 2. Kurze Hand für .parent(). Parent(). Parent()
- 3. Suchen Sie das übergeordnete Steuerelement von ToolStripMenuItem
- 4. Cleaner Weg zu schreiben element.parent(). Parent(). Parent(). Parent(). Parent()
- 5. Überprüfen Sie nur ein ToolStripMenuItem
- 6. die ToolStripMenuItem entfernen linken Rand
- 7. ContextMenuStrip.Owner Eigenschaft null beim Abrufen von Nested ToolStripMenuItem
- 8. Die geschützten Member von Parent mit Initialisierungsliste initialisieren (C++)
- 9. Beste Möglichkeit, Child-Methode von Parent in C++ Vererbung
- 10. Bindung an Parent DataTemplate-Eigenschaft von ItemsControl
- 11. Enum C++ Get von Index
- 12. Get Objekt von mongodb C#
- 13. C# Get-Computername von IP
- 14. Get-Typen von C++ - Funktionsparametern
- 15. {this.props.children} und Routenparameter von Parent?
- 16. Verhindern, dass Schaltfläche Erben BackColor von Parent
- 17. So deaktivieren Sie ToolStripMenuItem im Kontextmenü Dynamisch?
- 18. jQuery .parent() funktioniert nicht
- 19. Welches ist effizienter: .parent(). Parent(). Parent() ~ oder ~ eltern (". Foo") ~ oder ~ am nächsten (". Foo")
- 20. Multi-Parent-Verknüpfung
- 21. Referencing Parent in Cocoa
- 22. jQuery mehrere parent() ruft
- 23. C# Get Anwendung URL
- 24. C# Get progID von COM-Objekt
- 25. Get Byte [] von Int in C++
- 26. C# Get Jahr Teil von Datum
- 27. C# Lambda-Ausdruck - Get Eigenschaftswert von String
- 28. Get MIME-Typ von Dateiname in C
- 29. Wie DPI von Bild in C# Get
- 30. Seltsame Ausführung von Get Accessor in C#?
mögliches Duplikat von [C# - Konvertieren von MenuStrip-Code zu ToolStrip] (http://StackOverflow.com/questions/4572381/c-convert-menustrip-code-to-toolstrip) –
Es gibt einen ['Besitzer'] (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) und ['Parent '] (http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.parent.aspx) Eigenschaft, die von der [ToolStripMenuItem-Klasse] (http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmenuitem.aspx) bereitgestellt wird. Funktionieren * keine * dieser für Sie? Es ist schwierig zu verstehen, was Sie erreichen möchten und warum es nicht funktioniert. –
@Hans, es ist kein Duplikat, sondern eine genauere Frage, um an die Wurzel des Problems zu gelangen. Und diese Frage hat mich nirgendwohin geführt, auch du hast versucht, es ohne Erfolg zu beantworten und dann deine Antwort gelöscht. – user