Mega Code Archive

 
Categories / C# / GUI Windows Form
 

TreeView Drag And Drop

/* User Interfaces in C#: Windows Forms and Custom Controls by Matthew MacDonald Publisher: Apress ISBN: 1590590457 */ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace TreeViewDragAndDrop {     /// <summary>     /// Summary description for TreeViewDragAndDrop.     /// </summary>     public class TreeViewDragAndDrop : System.Windows.Forms.Form     {         internal System.Windows.Forms.TreeView treeTwo;         internal System.Windows.Forms.Splitter Splitter1;         internal System.Windows.Forms.TreeView treeOne;         /// <summary>         /// Required designer variable.         /// </summary>         private System.ComponentModel.Container components = null;         public TreeViewDragAndDrop()         {             //             // Required for Windows Form Designer support             //             InitializeComponent();             //             // TODO: Add any constructor code after InitializeComponent call             //         }         /// <summary>         /// Clean up any resources being used.         /// </summary>         protected override void Dispose( bool disposing )         {             if( disposing )             {                 if (components != null)                  {                     components.Dispose();                 }             }             base.Dispose( disposing );         }         #region Windows Form Designer generated code         /// <summary>         /// Required method for Designer support - do not modify         /// the contents of this method with the code editor.         /// </summary>         private void InitializeComponent()         {             this.treeTwo = new System.Windows.Forms.TreeView();             this.Splitter1 = new System.Windows.Forms.Splitter();             this.treeOne = new System.Windows.Forms.TreeView();             this.SuspendLayout();             //              // treeTwo             //              this.treeTwo.Dock = System.Windows.Forms.DockStyle.Fill;             this.treeTwo.HideSelection = false;             this.treeTwo.ImageIndex = -1;             this.treeTwo.Location = new System.Drawing.Point(239, 0);             this.treeTwo.Name = "treeTwo";             this.treeTwo.SelectedImageIndex = -1;             this.treeTwo.Size = new System.Drawing.Size(281, 366);             this.treeTwo.TabIndex = 6;             this.treeTwo.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tree_MouseDown);             this.treeTwo.DragOver += new System.Windows.Forms.DragEventHandler(this.tree_DragOver);             this.treeTwo.DragDrop += new System.Windows.Forms.DragEventHandler(this.tree_DragDrop);             //              // Splitter1             //              this.Splitter1.Location = new System.Drawing.Point(236, 0);             this.Splitter1.Name = "Splitter1";             this.Splitter1.Size = new System.Drawing.Size(3, 366);             this.Splitter1.TabIndex = 5;             this.Splitter1.TabStop = false;             //              // treeOne             //              this.treeOne.Dock = System.Windows.Forms.DockStyle.Left;             this.treeOne.HideSelection = false;             this.treeOne.ImageIndex = -1;             this.treeOne.Name = "treeOne";             this.treeOne.SelectedImageIndex = -1;             this.treeOne.Size = new System.Drawing.Size(236, 366);             this.treeOne.TabIndex = 4;             this.treeOne.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tree_MouseDown);             this.treeOne.DragOver += new System.Windows.Forms.DragEventHandler(this.tree_DragOver);             this.treeOne.DragDrop += new System.Windows.Forms.DragEventHandler(this.tree_DragDrop);             //              // TreeViewDragAndDrop             //              this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);             this.ClientSize = new System.Drawing.Size(520, 366);             this.Controls.AddRange(new System.Windows.Forms.Control[] {                                                                           this.treeTwo,                                                                           this.Splitter1,                                                                           this.treeOne});             this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));             this.Name = "TreeViewDragAndDrop";             this.Text = "TreeView Drag-And-Drop";             this.Load += new System.EventHandler(this.TreeViewDragAndDrop_Load);             this.ResumeLayout(false);         }         #endregion         /// <summary>         /// The main entry point for the application.         /// </summary>         [STAThread]         static void Main()          {             Application.Run(new TreeViewDragAndDrop());         }         private void TreeViewDragAndDrop_Load(object sender, System.EventArgs e)         {             TreeNode node = treeOne.Nodes.Add("Fruits");             node.Nodes.Add("Apple");             node.Nodes.Add("Peach");             node.Expand();                          node = treeTwo.Nodes.Add("Vegetables");             node.Nodes.Add("Tomato");             node.Nodes.Add("Eggplant");             node.Expand();                          treeTwo.AllowDrop = true;             treeOne.AllowDrop = true;         }         private void tree_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)          {             // Get the tree.             TreeView tree = (TreeView)sender;             // Get the node underneath the mouse.             TreeNode node = tree.GetNodeAt(e.X, e.Y);             tree.SelectedNode = node;             // Start the drag-and-drop operation with a cloned copy of the node.             if (node != null)             {                 tree.DoDragDrop(node.Clone(), DragDropEffects.Copy);             }         }         private void tree_DragOver(object sender, System.Windows.Forms.DragEventArgs e)         {             // Get the tree.             TreeView tree = (TreeView)sender;             // Drag and drop denied by default.             e.Effect = DragDropEffects.None;             // Is it a valid format?             if (e.Data.GetData(typeof(TreeNode)) != null)             {                 // Get the screen point.                 Point pt = new Point(e.X, e.Y);                 // Convert to a point in the TreeView's coordinate system.                 pt = tree.PointToClient(pt);                 // Is the mouse over a valid node?                 TreeNode node = tree.GetNodeAt(pt);                 if (node != null)                 {                     e.Effect = DragDropEffects.Copy;                     tree.SelectedNode = node;                 }             }         }         private void tree_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)         {             // Get the tree.             TreeView tree = (TreeView)sender;             // Get the screen point.             Point pt = new Point(e.X, e.Y);             // Convert to a point in the TreeView's coordinate system.             pt = tree.PointToClient(pt);             // Get the node underneath the mouse.             TreeNode node = tree.GetNodeAt(pt);             // Add a child node.             node.Nodes.Add((TreeNode)e.Data.GetData(typeof(TreeNode)));             // Show the newly added node if it is not already visible.             node.Expand();         }     } }