2010-12-31 13 views
10

Jak określić rodzica ToolStripMenuItem? Z normalnym MenuStrip wszystko co musisz zrobić, to użyć właściwości Parent, ale nie wydaje się, że ToolStripMenuItem ma tę właściwość. Mam ToolStripDropDownButton, który ma kilka ToolStripMenuItems i chciałbym być w stanie wskazać program macierzysty nadrzędny.C# - Pobierz Parent ToolStripMenuItem

+0

możliwy duplikat [C# - Konwertuj kod MenuStrip na ToolStrip] (http://stackoverflow.com/questions/4572381/c-convert-menustrip-code-to-toolstrip) –

+0

Istnieje ['Właściciel'] (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) i ['Parent'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.parent.aspx) własność ujawniona przez klasę ['ToolStripMenuItem'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmenuitem.aspx). Czy * brak * z tych prac dla Ciebie? Trudno zrozumieć, co próbujesz osiągnąć i dlaczego nie działa. –

+0

@Hans, to nie duplikat, ale raczej bardziej precyzyjne pytanie, aby dostać się do źródła problemu. I to pytanie nie doprowadziło mnie do niczego, nawet ty próbowałeś odpowiedzieć na to bez powodzenia, a następnie skasowałeś swoją odpowiedź. – user

Odpowiedz

13

Wypróbuj właściwość OwnerItem.

+5

Jako komentarz do pytania ... działa to tylko dla menu zbudowanego jako pojedyncza jednostka Ustawienie właściwości DropDown na inne menu kontekstowe "łamie" hierarchię, tzn. Można tylko podejść do ustawionego menu kontekstowego. – AndrewD

3

Spróbuj .....

ToolStripMenuItem t = (ToolStripMenuItem)sender; 
ContextMenuStrip s = (ContextMenuStrip)t.Owner; 
MessageBox.Show(s.SourceControl.Name); 
0

Oto czego szukasz

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

Działa to dla mnie:

ToolStripMenuItem menuItem = sender as ToolStripMenuItem; 

ToolStrip toolStrip = menuItem.GetCurrentParent(); 

... z tego, ty potrafi opracować metodę przeniesienia Cię z losowego ToolStripMenuItem na najwyższy poziom, na przykład:

Powiązane problemy