14. november 2008 - 08:56
Der er
1 kommentar og 1 løsning
dynamisk toolstripmenu skal åbne fil ved klik
Hej experter har lavet følgende i en application: string curdir = Directory.GetCurrentDirectory(); string[] subdirs = Directory.GetDirectories(curdir); foreach (string i in subdirs) { ToolStripMenuItem item = new ToolStripMenuItem(i.Replace(curdir, "")); string[] files = Directory.GetFiles(i); foreach (string x in files) { item.DropDownItems.Add(x.Replace(i, ""), null); } contextMenuStrip1.Items.Add(item); } Ideen er så at når man trykker på følgende: item.DropDownItems.Add(x.Replace(i, ""), null); skulle programmet gerne starte filen. Men hvordan får jeg lige kringlet den?
Annonceindlæg fra Computerworld
Geopolitik i cyberspace
Mark Fiedel i Styrelsen for Samfundssikkerhed påpeger behovet for, at Danmark kigger kritisk på leverandørafhængighed.
13. juni 2025
14. november 2008 - 10:12
#1
Prøv noget lignende dette: string curdir = Directory.GetCurrentDirectory(); string[] subdirs = Directory.GetDirectories(curdir); foreach (string i in subdirs) { ToolStripMenuItem item = new ToolStripMenuItem(i.Replace(curdir, "")); string[] files = Directory.GetFiles(i); foreach (string x in files) { ToolStripMenuItem fileItem = item.DropDownItems.Add(x.Replace(i, ""), null); fileItem.Tag = x; fileItem.Click += new EventHandler(fileItem_Click) } contextMenuStrip1.Items.Add(item); } og så skal du have en event handler void item_Click(object sender, EventArgs e) { string fileName = (string)((ToolStripMenuItem)sender).Tag; Process.Start(fileName) }
19. november 2008 - 04:32
#2
Fandt en måde: string[] subdirs = Directory.GetDirectories(curdir); foreach (string i in subdirs) { ToolStripMenuItem item = new ToolStripMenuItem(i); categorylist.Items.Add(i); string[] files = Directory.GetFiles(i); foreach (string x in files) { item.DropDownItems.Add(x, null, dropclick); } contextMenuStrip1.Items.Add(item); } Og dropclick: private void dropclick(object sender, EventArgs e) { System.Diagnostics.Process.Start(sender.ToString()); } Men ellers tak for svaret ;)