Csharp/C Sharp by API/System.Windows.Forms/TreeView
Содержание
extends TreeView
/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald
Publisher: Apress
ISBN: 1590590457
*/
using System.IO;
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
namespace DirectoryTreeHost
{
/// <summary>
/// Summary description for DirectoryTreeHost.
/// </summary>
public class DirectoryTreeHost : System.Windows.Forms.Form
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ruponentModel.Container components = null;
public DirectoryTreeHost()
{
//
// 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()
{
//
// DirectoryTreeHost
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Name = "DirectoryTreeHost";
this.Text = "DirectoryTreeHost";
this.Load += new System.EventHandler(this.DirectoryTreeHost_Load);
}
#endregion
private void DirectoryTreeHost_Load(object sender, System.EventArgs e)
{
DirectoryTree dirTree = new
DirectoryTree();
dirTree.Size = new Size(this.Width - 30, this.Height - 60);
dirTree.Location = new Point(5, 5);
dirTree.Drive = Char.Parse("C");
this.Controls.Add(dirTree);
}
public static void Main()
{
Application.Run(new DirectoryTreeHost());
}
}
public class DirectoryTree : TreeView
{
public delegate void DirectorySelectedDelegate(object sender,
DirectorySelectedEventArgs e);
public event DirectorySelectedDelegate DirectorySelected;
private Char drive;
public Char Drive
{
get
{
return drive;
}
set
{
drive = value;
RefreshDisplay();
}
}
// This is public so a Refresh can be triggered manually.
public void RefreshDisplay()
{
// Erase the existing tree.
this.Nodes.Clear();
// Set the first node.
TreeNode rootNode = new TreeNode(drive + ":\\");
this.Nodes.Add(rootNode);
// Fill the first level and expand it.
Fill(rootNode);
this.Nodes[0].Expand();
}
private void Fill(TreeNode dirNode)
{
DirectoryInfo dir = new DirectoryInfo(dirNode.FullPath);
// An exception could be thrown in this code if you don"t
// have sufficient security permissions for a file or directory.
// You can catch and then ignore this exception.
foreach (DirectoryInfo dirItem in dir.GetDirectories())
{
// Add node for the directory.
TreeNode newNode = new TreeNode(dirItem.Name);
dirNode.Nodes.Add(newNode);
newNode.Nodes.Add("*");
}
}
protected override void OnBeforeExpand(TreeViewCancelEventArgs e)
{
base.OnBeforeExpand(e);
// If a dummy node is found, remove it and read the real directory list.
if (e.Node.Nodes[0].Text == "*")
{
e.Node.Nodes.Clear();
Fill(e.Node);
}
}
protected override void OnAfterSelect(TreeViewEventArgs e)
{
base.OnAfterSelect(e);
// Raise the DirectorySelected event.
if (DirectorySelected != null)
{
DirectorySelected(this,
new DirectorySelectedEventArgs(e.Node.FullPath));
}
}
}
public class DirectorySelectedEventArgs : EventArgs
{
public string DirectoryName;
public DirectorySelectedEventArgs(string directoryName)
{
this.DirectoryName = directoryName;
}
}
}
TreeView.AfterSelect
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
namespace TreeViewExample
{
/// <summary>
/// Summary description for TreeViewExample.
/// </summary>
public class TreeViewExample : System.Windows.Forms.Form
{
internal System.Windows.Forms.TreeView treeFood;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ruponentModel.Container components = null;
public TreeViewExample()
{
//
// 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.treeFood = new System.Windows.Forms.TreeView();
this.SuspendLayout();
//
// treeFood
//
this.treeFood.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.treeFood.ImageIndex = -1;
this.treeFood.Location = new System.Drawing.Point(4, 5);
this.treeFood.Name = "treeFood";
this.treeFood.SelectedImageIndex = -1;
this.treeFood.Size = new System.Drawing.Size(284, 256);
this.treeFood.TabIndex = 1;
this.treeFood.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeFood_AfterSelect);
//
// TreeViewExample
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.treeFood});
this.Name = "TreeViewExample";
this.Text = "TreeView Example";
this.Load += new System.EventHandler(this.TreeViewExample_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new TreeViewExample());
}
private void TreeViewExample_Load(object sender, System.EventArgs e)
{
TreeNode node;
node = treeFood.Nodes.Add("Fruits");
node.Nodes.Add("Apple");
node.Nodes.Add("Peach");
node = treeFood.Nodes.Add("Vegetables");
node.Nodes.Add("Tomato");
node.Nodes.Add("Eggplant");
}
private void treeFood_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)
{
MessageBox.Show(e.Node.FullPath);
}
}
}
}
TreeView.BeforeExpand
/*
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.ruponentModel;
using System.Windows.Forms;
using System.Data;
namespace TreeViewDataBinding
{
/// <summary>
/// Summary description for TreeViewDataBinding.
/// </summary>
public class TreeViewDataBinding : System.Windows.Forms.Form
{
internal System.Windows.Forms.Panel Panel2;
internal System.Windows.Forms.Panel Panel3;
internal System.Windows.Forms.Label lblInfo;
internal System.Windows.Forms.Label Label1;
internal System.Windows.Forms.Splitter Splitter1;
internal System.Windows.Forms.TreeView treeDB;
internal System.Windows.Forms.Panel Panel1;
internal System.Windows.Forms.Button cmdClose;
internal System.Windows.Forms.GroupBox GroupBox1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ruponentModel.Container components = null;
public TreeViewDataBinding()
{
//
// 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.Panel2 = new System.Windows.Forms.Panel();
this.Panel3 = new System.Windows.Forms.Panel();
this.lblInfo = new System.Windows.Forms.Label();
this.Label1 = new System.Windows.Forms.Label();
this.Splitter1 = new System.Windows.Forms.Splitter();
this.treeDB = new System.Windows.Forms.TreeView();
this.Panel1 = new System.Windows.Forms.Panel();
this.cmdClose = new System.Windows.Forms.Button();
this.GroupBox1 = new System.Windows.Forms.GroupBox();
this.Panel2.SuspendLayout();
this.Panel3.SuspendLayout();
this.Panel1.SuspendLayout();
this.SuspendLayout();
//
// Panel2
//
this.Panel2.Controls.AddRange(new System.Windows.Forms.Control[] {
this.Panel3,
this.Splitter1,
this.treeDB});
this.Panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.Panel2.Location = new System.Drawing.Point(5, 5);
this.Panel2.Name = "Panel2";
this.Panel2.Size = new System.Drawing.Size(446, 264);
this.Panel2.TabIndex = 8;
//
// Panel3
//
this.Panel3.Controls.AddRange(new System.Windows.Forms.Control[] {
this.lblInfo,
this.Label1});
this.Panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.Panel3.Location = new System.Drawing.Point(239, 0);
this.Panel3.Name = "Panel3";
this.Panel3.Size = new System.Drawing.Size(207, 264);
this.Panel3.TabIndex = 7;
//
// lblInfo
//
this.lblInfo.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.lblInfo.BackColor = System.Drawing.SystemColors.Window;
this.lblInfo.Location = new System.Drawing.Point(16, 12);
this.lblInfo.Name = "lblInfo";
this.lblInfo.Size = new System.Drawing.Size(176, 240);
this.lblInfo.TabIndex = 1;
//
// Label1
//
this.Label1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.Label1.BackColor = System.Drawing.SystemColors.Window;
this.Label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.Label1.Location = new System.Drawing.Point(4, 0);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(200, 264);
this.Label1.TabIndex = 2;
//
// Splitter1
//
this.Splitter1.Location = new System.Drawing.Point(236, 0);
this.Splitter1.Name = "Splitter1";
this.Splitter1.Size = new System.Drawing.Size(3, 264);
this.Splitter1.TabIndex = 6;
this.Splitter1.TabStop = false;
//
// treeDB
//
this.treeDB.Dock = System.Windows.Forms.DockStyle.Left;
this.treeDB.ImageIndex = -1;
this.treeDB.Name = "treeDB";
this.treeDB.SelectedImageIndex = -1;
this.treeDB.Size = new System.Drawing.Size(236, 264);
this.treeDB.TabIndex = 4;
this.treeDB.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeDB_AfterSelect);
this.treeDB.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeDB_BeforeExpand);
//
// Panel1
//
this.Panel1.Controls.AddRange(new System.Windows.Forms.Control[] {
this.cmdClose,
this.GroupBox1});
this.Panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.Panel1.Location = new System.Drawing.Point(5, 269);
this.Panel1.Name = "Panel1";
this.Panel1.Size = new System.Drawing.Size(446, 36);
this.Panel1.TabIndex = 7;
//
// cmdClose
//
this.cmdClose.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
this.cmdClose.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.cmdClose.Location = new System.Drawing.Point(372, 12);
this.cmdClose.Name = "cmdClose";
this.cmdClose.Size = new System.Drawing.Size(72, 24);
this.cmdClose.TabIndex = 4;
this.cmdClose.Text = "Close";
this.cmdClose.Click += new System.EventHandler(this.cmdClose_Click);
//
// GroupBox1
//
this.GroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.GroupBox1.Name = "GroupBox1";
this.GroupBox1.Size = new System.Drawing.Size(444, 8);
this.GroupBox1.TabIndex = 5;
this.GroupBox1.TabStop = false;
//
// TreeViewDataBinding
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
this.ClientSize = new System.Drawing.Size(456, 310);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.Panel2,
this.Panel1});
this.DockPadding.All = 5;
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Name = "TreeViewDataBinding";
this.Text = "TreeViewDataBinding";
this.Load += new System.EventHandler(this.TreeViewDataBinding_Load);
this.Panel2.ResumeLayout(false);
this.Panel3.ResumeLayout(false);
this.Panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new TreeViewDataBinding());
}
private ProductDatabase DataClass = new ProductDatabase();
private void TreeViewDataBinding_Load(object sender, System.EventArgs e)
{
TreeNode nodeParent;
foreach (DataRow row in DataClass.GetCategories().Rows)
{
// Add the category node.
nodeParent = treeDB.Nodes.Add(row[ProductDatabase.CategoryField.Name].ToString());
nodeParent.ImageIndex = 0;
// Store the disconnected category information.
nodeParent.Tag = row;
// Add a "dummy" node.
nodeParent.Nodes.Add("*");
}
}
private void treeDB_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
TreeNode nodeSelected, nodeChild;
nodeSelected = e.Node;
if (nodeSelected.Nodes[0].Text == "*")
{
// This is a dummy node.
nodeSelected.Nodes.Clear();
foreach (DataRow row in
DataClass.GetProductsInCategory((DataRow)nodeSelected.Tag))
{
nodeChild = nodeSelected.Nodes.Add(row[ProductDatabase.ProductField.Name].ToString());
// Store the disconnected product information.
nodeChild.Tag = row;
nodeChild.ImageIndex = 1;
nodeChild.SelectedImageIndex = 1;
}
}
}
private void treeDB_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
lblInfo.Text = DataClass.GetDisplayText((DataRow)e.Node.Tag);
}
private void cmdClose_Click(object sender, System.EventArgs e)
{
this.Close();
}
}
public class ProductDatabase
{
public class Tables
{
public const string Product = "Products";
public const string Category = "Categories";
}
public class ProductField
{
public const string Name = "ModelName";
public const string Description = "Description";
}
public class CategoryField
{
public const string Name = "CategoryName";
}
private DataSet dsStore;
DataRelation relCategoryProduct;
public ProductDatabase()
{
dsStore = new DataSet();
dsStore.ReadXmlSchema(Application.StartupPath + "\\store.xsd");
dsStore.ReadXml(Application.StartupPath + "\\store.xml");
// Define the relation.
relCategoryProduct = new DataRelation("Prod_Cat",
dsStore.Tables["Categories"].Columns["CategoryID"],
dsStore.Tables["Products"].Columns["CategoryID"]);
dsStore.Relations.Add(relCategoryProduct);
}
public DataTable GetCategories()
{
return dsStore.Tables["Categories"];
}
public DataRow[] GetProductsInCategory(DataRow rowParent)
{
return rowParent.GetChildRows(relCategoryProduct);
}
public string GetDisplayText(DataRow row)
{
string text = "";
switch (row.Table.TableName)
{
case Tables.Product:
text = "ID: " + row[0] + "\n";
text += "Name: " + row[ProductField.Name] + "\n\n";
text += row[ProductField.Description];
break;
}
return text;
}
}
}
TreeView.Dock
using System;
using System.Drawing;
using System.Windows.Forms;
class SimpleTreeView: Form
{
public static void Main()
{
Application.Run(new SimpleTreeView());
}
public SimpleTreeView()
{
Text = "Simple Tree View";
TreeView tree = new TreeView();
tree.Parent = this;
tree.Dock = DockStyle.Fill;
tree.Nodes.Add("Animal");
tree.Nodes[0].Nodes.Add("A");
tree.Nodes[0].Nodes[0].Nodes.Add("A1");
tree.Nodes[0].Nodes[0].Nodes.Add("A2");
tree.Nodes[0].Nodes[0].Nodes.Add("A3");
tree.Nodes[0].Nodes.Add("B");
tree.Nodes[0].Nodes[1].Nodes.Add("B1");
tree.Nodes[0].Nodes[1].Nodes.Add("B2");
tree.Nodes[0].Nodes.Add("C");
tree.Nodes[0].Nodes[2].Nodes.Add("C1");
tree.Nodes[0].Nodes[2].Nodes.Add("C2");
tree.Nodes[0].Nodes[2].Nodes.Add("C3");
tree.Nodes.Add("D");
tree.Nodes[1].Nodes.Add("D1");
tree.Nodes[1].Nodes.Add("D2");
tree.Nodes[1].Nodes.Add("D3");
tree.Nodes.Add("E");
tree.Nodes[2].Nodes.Add("E1");
tree.Nodes[2].Nodes.Add("E2");
tree.Nodes[2].Nodes.Add("E3");
}
}
TreeView.DoDragDrop
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form
{
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TreeView treeOne;
private System.Windows.Forms.TreeView treeTwo;
public Form1() {
InitializeComponent();
TreeNode node = treeOne.Nodes.Add("A");
node.Nodes.Add("A1");
node.Nodes.Add("A2");
node.Expand();
node = treeTwo.Nodes.Add("B");
node.Nodes.Add("B1");
node.Nodes.Add("B2");
node.Expand();
treeTwo.AllowDrop = true;
treeOne.AllowDrop = true;
}
private void tree_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
TreeView tree = (TreeView)sender;
TreeNode node = tree.GetNodeAt(e.X, e.Y);
tree.SelectedNode = node;
if (node != null)
{
tree.DoDragDrop(node, DragDropEffects.Copy);
}
}
private void tree_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeView tree = (TreeView)sender;
e.Effect = DragDropEffects.None;
TreeNode nodeSource = (TreeNode)e.Data.GetData(typeof(TreeNode));
if (nodeSource != null)
{
if (nodeSource.TreeView != tree)
{
Point pt = new Point(e.X, e.Y);
pt = tree.PointToClient(pt);
TreeNode nodeTarget = tree.GetNodeAt(pt);
if (nodeTarget != null)
{
e.Effect = DragDropEffects.Copy;
tree.SelectedNode = nodeTarget;
}
}
}
}
private void tree_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeView tree = (TreeView)sender;
Point pt = new Point(e.X, e.Y);
pt = tree.PointToClient(pt);
TreeNode nodeTarget = tree.GetNodeAt(pt);
TreeNode nodeSource = (TreeNode)e.Data.GetData(typeof(TreeNode));
nodeTarget.Nodes.Add((TreeNode)nodeSource.Clone());
nodeTarget.Expand();
}
private void InitializeComponent()
{
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.treeOne = new System.Windows.Forms.TreeView();
this.treeTwo = new System.Windows.Forms.TreeView();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.treeOne);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.treeTwo);
this.splitContainer1.Size = new System.Drawing.Size(456, 391);
this.splitContainer1.SplitterDistance = 238;
this.splitContainer1.TabIndex = 0;
this.splitContainer1.Text = "splitContainer1";
//
// treeOne
//
this.treeOne.Dock = System.Windows.Forms.DockStyle.Left;
this.treeOne.HideSelection = false;
this.treeOne.Location = new System.Drawing.Point(0, 0);
this.treeOne.Name = "treeOne";
this.treeOne.Size = new System.Drawing.Size(236, 391);
this.treeOne.TabIndex = 5;
this.treeOne.DragDrop += new System.Windows.Forms.DragEventHandler(this.tree_DragDrop);
this.treeOne.DragOver += new System.Windows.Forms.DragEventHandler(this.tree_DragOver);
this.treeOne.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tree_MouseDown);
//
// treeTwo
//
this.treeTwo.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeTwo.Location = new System.Drawing.Point(0, 0);
this.treeTwo.Name = "treeTwo";
this.treeTwo.Size = new System.Drawing.Size(214, 391);
this.treeTwo.TabIndex = 7;
this.treeTwo.DragDrop += new System.Windows.Forms.DragEventHandler(this.tree_DragDrop);
this.treeTwo.DragOver += new System.Windows.Forms.DragEventHandler(this.tree_DragOver);
this.treeTwo.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tree_MouseDown);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(456, 391);
this.Controls.Add(this.splitContainer1);
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Name = "Form1";
this.Text = "TreeView Drag-And-Drop";
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
TreeView.DoubleClick
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form
{
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TreeView treeOne;
private System.Windows.Forms.TreeView treeTwo;
public Form1() {
InitializeComponent();
TreeNode node = treeOne.Nodes.Add("A");
node.Nodes.Add("A1");
node.Nodes.Add("A2");
node.Expand();
node = treeTwo.Nodes.Add("B");
node.Nodes.Add("B1");
node.Nodes.Add("B2");
node.Expand();
}
private void tree_DoubleClick(object sender, EventArgs e)
{
MessageBox.Show(((TreeView)sender).SelectedNode.FullPath);
}
private void InitializeComponent()
{
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.treeOne = new System.Windows.Forms.TreeView();
this.treeTwo = new System.Windows.Forms.TreeView();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.treeOne);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.treeTwo);
this.splitContainer1.Size = new System.Drawing.Size(456, 391);
this.splitContainer1.SplitterDistance = 238;
this.splitContainer1.TabIndex = 0;
this.splitContainer1.Text = "splitContainer1";
//
// treeOne
//
this.treeOne.Dock = System.Windows.Forms.DockStyle.Left;
this.treeOne.HideSelection = false;
this.treeOne.Location = new System.Drawing.Point(0, 0);
this.treeOne.Name = "treeOne";
this.treeOne.Size = new System.Drawing.Size(236, 391);
this.treeOne.TabIndex = 5;
this.treeOne.DoubleClick += new System.EventHandler(this.tree_DoubleClick);
//
// treeTwo
//
this.treeTwo.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeTwo.Location = new System.Drawing.Point(0, 0);
this.treeTwo.Name = "treeTwo";
this.treeTwo.Size = new System.Drawing.Size(214, 391);
this.treeTwo.TabIndex = 7;
this.treeTwo.DoubleClick += new System.EventHandler(this.tree_DoubleClick);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(456, 391);
this.Controls.Add(this.splitContainer1);
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Name = "Form1";
this.Text = "TreeView Drag-And-Drop";
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
TreeView.DragOver
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
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.ruponentModel.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();
}
}
}
TreeView.HotTracking
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
public class Form1 : System.Windows.Forms.Form {
private System.Windows.Forms.TreeView treeView1;
ImageList il = new ImageList();
public Form1() {
this.treeView1 = new System.Windows.Forms.TreeView();
this.SuspendLayout();
this.treeView1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.treeView1.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.treeView1.HotTracking = true;
this.treeView1.ImageIndex = -1;
this.treeView1.Indent = 30;
this.treeView1.ItemHeight = 30;
this.treeView1.LabelEdit = true;
this.treeView1.Location = new System.Drawing.Point(8, 16);
this.treeView1.SelectedImageIndex = -1;
this.treeView1.Size = new System.Drawing.Size(360, 272);
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(376, 309);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.treeView1});
this.Text = "TreeView Control";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
[STAThread]
static void Main() {
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e) {
il.Images.Add(new Icon("1.ICO"));
il.Images.Add(new Icon("2.ICO"));
il.Images.Add(new Icon("3.ICO"));
il.Images.Add(new Icon("4.ICO"));
treeView1.ImageList = il;
TreeNode rootNode = treeView1.Nodes.Add("USA");
rootNode.ImageIndex = 0;
TreeNode states1 = rootNode.Nodes.Add("a");
states1.ImageIndex = 1;
TreeNode states2 = rootNode.Nodes.Add("b");
states2.ImageIndex = 1;
TreeNode states3 = rootNode.Nodes.Add("c");
states3.ImageIndex = 1;
TreeNode states4 = rootNode.Nodes.Add("d");
states4.ImageIndex = 1;
TreeNode child = states1.Nodes.Add("A");
child.ImageIndex = 2;
child = states1.Nodes.Add("e");
child.ImageIndex = 2;
child = states1.Nodes.Add("f");
child.ImageIndex = 2;
child = states2.Nodes.Add("g");
child.ImageIndex = 2;
child = states2.Nodes.Add("h");
child.ImageIndex = 2;
child = states2.Nodes.Add("i");
child.ImageIndex = 2;
child = states3.Nodes.Add("j");
child.ImageIndex = 2;
child = states3.Nodes.Add("k");
child.ImageIndex = 2;
child = states3.Nodes.Add("l");
child.ImageIndex = 2;
child = states4.Nodes.Add("m");
child.ImageIndex = 2;
child = states4.Nodes.Add("n");
child.ImageIndex = 2;
child = states4.Nodes.Add("o");
child.ImageIndex = 2;
}
}
TreeView.LabelEdit
/*
Professional Windows GUI Programming Using C#
by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,
Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information
ISBN: 1861007663
*/
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
namespace TreeView
{
/// <summary>
/// Summary description for TreeViewDemo.
/// </summary>
public class TreeViewDemo : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ruponentModel.Container components = null;
ImageList il = new ImageList();
public TreeViewDemo()
{
//
// 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.treeView1 = new System.Windows.Forms.TreeView();
this.SuspendLayout();
//
// treeView1
//
this.treeView1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.treeView1.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.treeView1.HotTracking = true;
this.treeView1.ImageIndex = -1;
this.treeView1.Indent = 30;
this.treeView1.ItemHeight = 30;
this.treeView1.LabelEdit = true;
this.treeView1.Location = new System.Drawing.Point(8, 16);
this.treeView1.Name = "treeView1";
this.treeView1.SelectedImageIndex = -1;
this.treeView1.Size = new System.Drawing.Size(360, 272);
this.treeView1.TabIndex = 0;
//
// TreeViewDemo
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(376, 309);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.treeView1});
this.Name = "TreeViewDemo";
this.Text = "TreeView Control";
this.Load += new System.EventHandler(this.TreeViewDemo_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new TreeViewDemo());
}
private void TreeViewDemo_Load(object sender, System.EventArgs e)
{
// Select icons into the image list
il.Images.Add(new Icon("KEY04.ICO"));
il.Images.Add(new Icon("ARW06LT.ICO"));
il.Images.Add(new Icon("LITENING.ICO"));
il.Images.Add(new Icon("ARW06UP.ICO"));
treeView1.ImageList = il ;
// Create the RootNode
TreeNode rootNode = treeView1.Nodes.Add("USA");
rootNode.ImageIndex =0 ;
// Create the Child nodes for the root
TreeNode states1 = rootNode.Nodes.Add("New York");
states1.ImageIndex =1 ;
TreeNode states2 = rootNode.Nodes.Add("Michigan");
states2.ImageIndex =1 ;
TreeNode states3 = rootNode.Nodes.Add("Wisconsin");
states3.ImageIndex =1 ;
TreeNode states4 = rootNode.Nodes.Add("California");
states4.ImageIndex =1 ;
// Create siblings nodes for the Child nodes
TreeNode child = states1.Nodes.Add("Rochester");
child.ImageIndex = 2 ;
child =states1.Nodes.Add("new York");
child.ImageIndex = 2 ;
child =states1.Nodes.Add("Albany");
child.ImageIndex = 2 ;
child = states2.Nodes.Add("Detroit");
child.ImageIndex = 2 ;
child =states2.Nodes.Add("Ann Arbor");
child.ImageIndex = 2 ;
child =states2.Nodes.Add("Lansing");
child.ImageIndex = 2 ;
child = states3.Nodes.Add("Milwaukee");
child.ImageIndex = 2 ;
child =states3.Nodes.Add("Madison");
child.ImageIndex = 2 ;
child =states3.Nodes.Add("La Cross");
child.ImageIndex = 2 ;
child = states4.Nodes.Add("Los Angeles");
child.ImageIndex = 2 ;
child =states4.Nodes.Add("San Fransisco");
child.ImageIndex = 2 ;
child =states4.Nodes.Add("San Diego");
child.ImageIndex = 2 ;
}
}
}