Foreach jeden Unterpunkt in einem MenuStrip
Möchte ich, um alle SubItems
meiner MenuStrip
, So kann ich Sie ändern alles auf einmal.
Ich bin versucht, Dinge wie die folgenden, die aber nicht funktioniert:
foreach (ToolStripMenuItem toolItem in menuStrip1.DropDownItems)
{
//Do something with toolItem here
}
Kann mir jemand helfen, die Kodierung eines guten foreach loop
für alle SubMenuItems(DropDownItems)
von der MenuStrip
?
BEARBEITEN Sie jetzt versuchen zu arbeiten, mit den folgenden Recursive method
:
private void SetToolStripItems(ToolStripItemCollection dropDownItems)
{
try
{
foreach (object obj in dropDownItems)
{
if (obj.GetType().Equals(typeof(ToolStripMenuItem)))
{
ToolStripMenuItem subMenu = (ToolStripMenuItem)obj;
if (subMenu.HasDropDownItems)
{
SetToolStripItems(subMenu.DropDownItems);
}
else
{
}
}
}
}
catch
{
}
}
Hinweis: Sie müssen verwenden Sie Rekursion.
Ich bin auf der Suche nach einem guten Artikel für, in dem moment...
obj.GetType().Equals(typeof(ToolStripMenuItem)) geschrieben werden kann, einfach wie (obj ToolStripMenuItem)
Ich bin auf der Suche nach einem guten Artikel für, in dem moment...
obj.GetType().Equals(typeof(ToolStripMenuItem)) geschrieben werden kann, einfach wie (obj ToolStripMenuItem)
InformationsquelleAutor Max | 2013-03-13
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
InformationsquelleAutor Vale
Änderung von Vale zu beantworten. Separatoren wird nicht Abstürzen dieser version und Sie wird auch zurückgegeben werden ( menuStripItems ist ein ToolStripItemCollection. dh: dies.MainMenuStrip.Items ):
Füllen einer list:
Schleife die Liste:
InformationsquelleAutor Soenhay
Es scheint, Sie können es nicht mit der direkten 'foreach' - Ansatz. Ich denke, dass ich es herausgefunden.
Hinzufügen Menüpunkte manuell zu einer Liste ist ein bisschen Barbar, aber mit 'foreach' oder 'für' oder andere Zyklen gab mir den gleichen Fehler. etwas über-enumeration. Es scheint, wie Sie nicht alle zählen die Menüpunkte von selbst 😛 Auf der anderen Seite, wenn Sie Elemente wie seperators und andere Sachen, das ist nicht ganz wie ein einfachen Menü-Element, indem wir Sie alle in einer Liste und versuchen, benennen Sie wirft ein weiteres problem.
Dies ist für die änderung der text, der angezeigt wird, auf Menü-Elemente, aber Sie können tun, absolut alles, was Sie wollen mit Ihnen über diese Methode.
Das ist, was ich sagte - eine barbarische Vorgehensweise, aber Sie funktioniert zumindest 😀
Haha ja, Sie haben Recht, ich gebe dir +1 für deine Arbeit und weil es funktioniert, aber ich brauche, um dynamisch ändern:)
Cha-ching 😀 viel Glück 🙂
InformationsquelleAutor Mārtiņš Radiņš
Du hast tatsächlich die falsche,
DropDownItems
enthält eine Sammlung vonToolStripItem
nicht eine Sammlung vonToolStripMenuItem
.Versuchen Sie dies:
Oder in Ihrer Funktion:
Dann nutzen Sie Ihre Funktion und ändern Sie es zu
dropDownItems
Können Sie mir zeigen, ein Beispiel in der Antwort?
Überprüfen Sie meine aktualisierte Bearbeiten, ich habe eine überarbeitete version Ihrer Funktion.
Es gibt keine ".HasDropDownItems" mit posten:(
InformationsquelleAutor mattytommo
Für .net 4.5 und höher ich habe diese verwendet werden, um dropdownitems für eine bestimmte toolstripmenuitem.
InformationsquelleAutor Leopacman
Bitte beachten Sie, dass "nicht funktionieren" ist eine sehr ineffiziente Beschreibung. Sollten Sie post von der Fehlermeldung oder Verhalten.
Gibt es eine schöne Erklärung, es hier
Hast du gelesen der link, den ich zur Verfügung gestellt? Es hat eine vollständige Lösung für Ihr problem.
Ich verwendet den code von diesem link, aber es funktioniert nicht mit dieser Methode, ich gebe Ihnen einen Daumen hoch für Ihre Arbeit, Beachten Sie: ich war nicht der, der nach unten gestimmt.
Vielen Dank für den Daumen nach oben. Bitte beachten Sie, dass die Menschen nicht helfen, mit "es funktioniert nicht", wenn Sie nicht geben eine genauere Beschreibung des Problems.
Es ist nicht die Arbeit, weil Sie diese Methode auswählen, werden alle Menü oben posten, aber ich brauchte die Unterpositionen zu, wie gesagt, in meiner Frage:)
InformationsquelleAutor nvoigt
Unten ist eine Erweiterung der Klasse um alle
ToolStripMenuItem
s. Der Vorteil hier ist, dass der gesamte code ist in einer rekursiven Methode. Man kann sich leicht konvertieren, um eine generische Methode, wenn Sie andere Menü-Element-Typen benötigt werden.InformationsquelleAutor Brett
Hier ist eine sehr einfache Lösung
InformationsquelleAutor Aylian Craspa