thetemplar_ - Do 27.08.09 10:02
Titel: dynamische dropdownlisten und ihre eventhandler
Hey,
ich hab folgendes Problem:
Ich erstelle dynamisch eine Dropdownliste:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| string[] dirs = Directory.GetDirectories(path); foreach (string dir in dirs) { dynItem[i] = new ToolStripMenuItem(); dynItem[i].Text = dir.ToString().Substring(path.Length+1); projektAuswählenToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { dynItem[i] }); dynItem[i].Click += new EventHandler(Form1_Click()); i++; } |
Jetzt will ich, wenn ein Item angeklickt wird, dieses Item mit einem Harken versehen, also auf ".Checked = true" setzen. Nur wie kann ich die einzelnen Items unterscheiden, da jeder Eintrag die gleiche Funktion aufruft. Kann ich irgendwie Parameter (i) übergeben? Ich hab es nicht hinbekommen, weil es dann eine neue Überladung wäre, da schon 2 Variablen definiert sind (
void Form1_Click(object sender, EventArgs e))...
Wie löse ich das Problem, ich hab leider kein Schimmer unter was ich dabei googeln muss...
Danke
raiguen - Do 27.08.09 11:55
Nun, weise jedem ToolStripMenuItem in der Eigenschaft
.Tag eine aussagekräftige Bezeichnung zu.
In dem abonierten Event überprüfst du den
sender auf DropDownItem -> wenn ja, dann klärst du den
Tag und entscheidest dann, was gemacht werden soll
kurzer Gedankenstoss:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if (sender is DropDownItem) { string ditag = (sender as DropDownItem).Tag.ToString(); switch (ditag) { } } |