About TreeView Control
/**/
/**/
/* TreeView */
private void treeView1_MouseDown(object sender, MouseEventArgs e)/* TreeView --》鼠标单击判断*/
{
this.treeView1.ContextMenuStrip = null;
if (e.Button == MouseButtons.Right)//鼠标点击右键
{
this.treeView1.SelectedNode = null;//清除节点的选中状态
TreeNode curNode = this.treeView1.GetNodeAt(e.X, e.Y);
if (curNode != null)
{
this.treeView1.SelectedNode = curNode;//锁定右键点击的节点
switch (curNode.Name)
{
case "IsNode"://是一个设备节点
this.treeView1.SelectedNode.ContextMenuStrip = this.contextMenuStripNetworkTopNode;
//点击节点处的右键菜单
break;
case "IsFileNode"://是一个文件夹节点
this.treeView1.SelectedNode.ContextMenuStrip = this.contextMenuStripNetworkTopNode;
//点击节点处的右键菜单
break;
}
this.treeView1.SelectedNode = curNode;
this.treeView1.SelectedNode.ContextMenuStrip = this.contextMenuStripNetworkTopNode;
//点击节点处的右键菜单
}
else
{
//this.treeView1.SelectedNode = null;//取消节点的选中状态
this.treeView1.ContextMenuStrip = this.contextMenuStripDeviceTree;
//点击TreeView空白处的右键菜单
}
}
}
private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e)
{/* TreeView --》目录树折叠后,文件夹节点图标改变*/
TreeNode node = e.Node;
node.ImageIndex = 0;
node.SelectedImageIndex = 0;
}
private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
{/* TreeView --》目录树展开后,文件夹节点图标改变*/
TreeNode node = e.Node;
node.ImageIndex = 1;
node.SelectedImageIndex = 1;
}
/* TreeView 拖放节点功能 */
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{//触发TreeNode拖放操作
this.treeView1.SelectedNode = null;
TreeNode tn = (TreeNode)e.Item;
if ((e.Button == MouseButtons.Left) && (tn != null))
{
DoDragDrop(e.Item, DragDropEffects.Move);
this.treeView1.SelectedNode = tn;
}
}
private void treeView1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
TreeNode srcTreeNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode dstTreeNode = ((TreeView)sender).GetNodeAt(pt);
if ((dstTreeNode != null) && (dstTreeNode.Name != "IsDevice") && (dstTreeNode != srcTreeNode.Parent))
{
this.treeView1.SelectedNode = dstTreeNode ;
dstTreeNode.Nodes.Add(srcTreeNode.Clone() as TreeNode);
if (srcTreeNode.Parent.Nodes.Count == 1)//如果该文件夹节点只有一个设备子节点,移除后折叠起来
{
srcTreeNode .Parent.Collapse();//折叠起来
srcTreeNode .Remove();
}
dstTreeNode .ExpandAll();//展开子树
}
}
}
private void treeView1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(TreeNode)))
{
e.Effect = DragDropEffects.Move;
}
}
private void treeView1_DragOver(object sender, DragEventArgs e)
{
TreeNode Node = this.treeView1.GetNodeAt(treeView1.PointToClient(new Point(e.X,e.Y)));
if (Node != null)
{
this.treeView1.SelectedNode = Node;
e.Effect = DragDropEffects.Move;
}
}
private void treeView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)//Delete按键,删除节点
DeleteTreeNode();
else if (e.KeyCode == Keys.F2)
treeView1.SelectedNode.BeginEdit();//F2按键,编辑节点Label标签
}