Hallo!
Also ich hab eine Menüstruktur mit Submenüeinträgen. Anzahl der Submenüs ist konstant (hier: Hauptstadt + Sprache), die der eigentlichen Menüeintrage hingegen nicht (hier: Land). Später muss ich aber irgendwie Informationen des entsprechenden Submenüeintrages verarbeiten.
Wenn ich also bspw. auf Berlin klickere, soll ich auch ohne Probleme die Sprache deutsch bzw. das Land Deutschland rausbekommen können. Also im Idealfall wäre der Rückgabewert der Index meiner Liste "myList". Wie bekomme ich sowas am besten hin?
Wie erstellt man denn prinzipiell dynamisch die EventHandler wenn man nicht weiss wie viele es wohl mal werden?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { private List<myType> myList = new List<myType>();
public Form1() { InitializeComponent(); myList.Add(new myType(new string[] {"Deutschland", "Berlin", "deutsch"})); myList.Add(new myType(new string[] {"Spanien", "Madrid", "spanisch"})); }
private void Form1_Load(object sender, EventArgs e) { int i = 0;
foreach (myType info in myList) { i++;
ToolStripMenuItem a = new ToolStripMenuItem(); a.Text = i.ToString() + "tes Land: " + info.Land;
ToolStripMenuItem x = new ToolStripMenuItem(); x.Text = info.Hauptstadt; x.Click += new EventHandler(x_Click); ToolStripMenuItem y = new ToolStripMenuItem(); y.Text = info.Sprache;
a.DropDownItems.AddRange(new ToolStripItem[] { x, y }); toolStripDropDownButton1.DropDownItems.Add(a); } }
void x_Click(object sender, EventArgs e) { if (sender.ToString() == "Berlin") { MessageBox.Show("Du hast Berlin geklickt..."); } else { MessageBox.Show("Du hast NICHT Berlin geklickt..."); } }
}
public class myType { public myType(string[] info) { Land = info[0]; Hauptstadt = info[1]; Sprache = info[2]; }
public String Land { get; private set; } public String Hauptstadt { get; private set; } public String Sprache { get; private set; } } } |