private void ShowContextMenu(TreeNodeMouseClickEventArgs e) { FileSystemNode fsnode = e.Node.Tag as FileSystemNode; if (fsnode != null) { ContextMenu menu = new ContextMenu(); if (fsnode is Folder) { Folder f = fsnode as Folder; menu.MenuItems.Add(new MenuItem("Refresh", new EventHandler(delegate(object o, EventArgs ea) { fsnode.ReloadChildren(); AppendChildren(e.Node, fsnode.GetChildren()); }))); menu.MenuItems.Add(new MenuItem("Save Folder...", new EventHandler(delegate(object o, EventArgs ea) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Any Files|*.*"; saveFileDialog.Title = "Select a Location"; saveFileDialog.FileName = f.Name; saveFileDialog.OverwritePrompt = true; if (saveFileDialog.ShowDialog() == DialogResult.OK) { SaveFolder(f, saveFileDialog.FileName); } }))); } if (fsnode is File) { File f = fsnode as File; menu.MenuItems.Add(new MenuItem("Save File...", new EventHandler(delegate(object o, EventArgs ea) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Any Files|*.*"; saveFileDialog.Title = "Select a Location"; saveFileDialog.FileName = f.Name; saveFileDialog.OverwritePrompt = true; if (saveFileDialog.ShowDialog() == DialogResult.OK) { SaveFile(f, saveFileDialog.FileName); } }))); } menu.Show(e.Node.TreeView, e.Location); } }