Quantcast
Channel: Windows Forms General forum
Viewing all articles
Browse latest Browse all 12583

C# Menu (Short)

$
0
0

WIndows 7

C#

I have a task:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using ReparsePoints;

// Shows a tree of folders, and indicates which ones are Symbolic Links, Junction Points or Mount Points and shows the target.
// Does not show Symbolic Links pointing to files
namespace ReparsePointID
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();

			// Put drives into treeview
			DriveInfo[] drives = DriveInfo.GetDrives();
			foreach (DriveInfo drive in drives)
			{
				RPTreeView.Nodes.Add(drive.Name.Substring(0,2));		// Take off the \
			}
		}


		private void fillNode(TreeNode node)
		{
			node.Nodes.Clear();
			string fullpath = "";
			TreeNode nextNode = node;
			// Build the full path by working our way up the tree adding each node's text to the full path.
			// If we're using targets and we hit a reparse point, put the RPs target on the front and stop looping
			do
			{
				if (targetRadioButton.Checked &&
					nextNode.Tag != null &&
					((ReparsePoint)nextNode.Tag).Tag != ReparsePoint.TagType.None &&
					((ReparsePoint)nextNode.Tag).Tag != ReparsePoint.TagType.MountPoint)	// Don;t trya and access mountpoints by target
				{
					// access the folder via its target rather than its actual name (this is the only way under XP)
					fullpath = ((ReparsePoint)nextNode.Tag).ToString() + "\\" + fullpath;
					break;
				}
				else
				{
					fullpath = nextNode.Text + "\\" + fullpath;
					nextNode = nextNode.Parent;
				}
			} while (nextNode != null);
			try
			{
				foreach (string directory in Directory.GetDirectories(fullpath))
				{
					ReparsePoint reparsePoint = new ReparsePoint(directory);
					TreeNode newNode = node.Nodes.Add(directory.Substring(directory.LastIndexOf('\\') + 1));
					newNode.Tag = reparsePoint;
					if (reparsePoint.Tag == ReparsePoint.TagType.MountPoint)
					{
						newNode.ForeColor = Color.Red;
					}
					else if (reparsePoint.Tag == ReparsePoint.TagType.JunctionPoint)
					{
						newNode.ForeColor = Color.Blue;
					}
					if (reparsePoint.Tag == ReparsePoint.TagType.SymbolicLink)
					{
						newNode.ForeColor = Color.Green;
					}
				}
			}
			catch (Exception exception)
			{
				MessageBox.Show(exception.Message, exception.GetType().ToString());
			}
			node.Expand();
		}

		private void RPTreeView_AfterExpand(object sender, TreeViewEventArgs e)
		{
			if (e.Action == TreeViewAction.ByKeyboard || e.Action == TreeViewAction.ByMouse)
			{
				fillNode(e.Node);
			}
		}

		private void RPTreeView_AfterSelect(object sender, TreeViewEventArgs e)
		{
			if (e.Action != TreeViewAction.Collapse & e.Action != TreeViewAction.Unknown)
			{
				fillNode(e.Node);  // NodeName
				if (((ReparsePoint)e.Node.Tag) == null || ((ReparsePoint)e.Node.Tag).Tag == ReparsePoint.TagType.None)
				{
					normalisedTargetLabel.Text = "";
					actualTargetLabel.Text = "";
				}
				else
				{
					normalisedTargetLabel.Text = "'" + ((ReparsePoint)e.Node.Tag).ToString() + "'";
					actualTargetLabel.Text = "'" + ((ReparsePoint)e.Node.Tag).Target + "'";
				}
			}
		}
	}
}


I'm not at all a C# Expert and I need help. On the treeview will be a list of directories or it may be a disk name:

I need a one item menu. The item will be Delete to delete a directory but not disk.

How do I put the delete menu item in?

Renee


"MODERN PROGRAMMING is deficient in elementary ways BECAUSE of problems INTRODUCED by MODERN PROGRAMMING." Me


Viewing all articles
Browse latest Browse all 12583

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>