2016-07-16 27 views
0

Ich habe einen Menüpunkt, der 5 Unterelemente enthält, jedes enthält 4 Unter-Unter-Elemente, jeder von ihnen würde eine neue Form, Wenn ich das mit neuen Formular für jeden Code Artikel, der mich 4 * 5 = 20 Forms !!!!Menüpunkte Code-Optimierung

Gibt es eine Möglichkeit, wo ich die Position des ausgewählten Unterunterpunkts kennen kann? und dann kann ich nur eine Form machen, das alles macht

enter image description here

+0

Ja. Setzen Sie alle Elemente in das Formular und verwenden Sie die Eigenschaft Visible = false (oder true) für die Steuerelemente. – jdweng

+0

das würde nur das Element ausblenden, ich möchte den Index des ausgewählten Elements oder so etwas, so dass ich alle Entscheidungen in einem Formular basierend auf dem ausgewählten Artikel Index behandeln kann –

Antwort

0

Wenn Sie die Positionen eines Menüpunktes aus dem Handler erhalten möchten, können Sie jeden Besitzer Artikel Aufarbeiten halten und seine Position zu finden, bis Sie haben eine vollständige Liste der Positionen:

// Get a reference to the current item as a tool strip menu item 
ToolStripMenuItem self = (ToolStripMenuItem)sender; 

// Build a list of positions 
List<int> position = new List<int>(); 
ToolStripMenuItem cur = self; 
// Keep looping until we don't find a parent 
while (cur != null) 
{ 
    if (cur.OwnerItem is ToolStripMenuItem) 
    { 
     // The owner is a menu item, add it's position to our list 
     ToolStripMenuItem parent = ((ToolStripMenuItem)cur.OwnerItem); 
     position.Insert(0, parent.DropDownItems.IndexOf(cur)); 
     // And now work on the owner 
     cur = parent; 
    } 
    else 
    { 
     // The owner isn't a menu item, so break out of our loop 
     cur = null; 
    } 
} 

// And as a demo, just show the positions: 
MessageBox.Show("You clicked on item at " + 
    string.Join(",", position.Select(x => x.ToString()).ToArray()));