TREEVIEW拖拽对应修改目录
TREEVIEW拖拽对应修改目录
using System.IO; |
private static string RootPath = @"D:\Administrator\Documents\TestData";
//返回 D:\Administrator\Documents
private string myPath = GetDirectoryParentPath(RootPath);
private void Form1_Load(object sender, EventArgs e)
{
treeView1.AllowDrop = true;
treeView1.HideSelection = false;
DirectoryToTreeNode(RootPath,treeView1);
} |
//添加目录到TREEVIEW
private void DirectoryToTreeNode(string RootDir, TreeView treeView)
{
treeView.Nodes.Clear();
DirectoryInfo di = new DirectoryInfo(RootDir);
TreeNode rootNode = new TreeNode(di.Name);
GetDirs(di.GetDirectories(), rootNode);
treeView.Nodes.Add(rootNode);
rootNode.Expand();
} |
private void GetDirs(DirectoryInfo[] subDirs, TreeNode treeNode)
{
foreach (DirectoryInfo d in subDirs)
{
TreeNode node = new TreeNode(d.Name, 0, 0);
DirectoryInfo[] subSubDirs = d.GetDirectories();
GetDirs(subSubDirs, node);
treeNode.Nodes.Add(node);
}
} |
/*问题
C:\Program Files\\\
C:\Program Files///
*/
private bool DirectoryExists(string path)
{
DirectoryInfo d = new DirectoryInfo(path);
return d.Exists;
} |
//目录 D:\Administrator\Documents\TestData
//返回 D:\Administrator\Documents
private static string GetDirectoryParentPath(string path)
{
DirectoryInfo d = new DirectoryInfo(path);
return d.Parent.FullName;
} |
//目录 D:\Administrator\Documents\TestData
//返回 TestData
private string ExtractDirectoryName(string path)
{
DirectoryInfo d = new DirectoryInfo(path);
return d.Name;
} |
//移动文件夹
//C:\Windows\a
//C:\Windows\b
//实际运行过程 Directory.Move( "C:\Windows\a" , "C:\Windows\b\a");
private bool MoveDirectory(string sourceDirName, string destDirName)
{
destDirName = String.Format("{0}\\{1}", destDirName, ExtractDirectoryName(sourceDirName));
//源目录存在 但目标目录不存在
if (DirectoryExists(sourceDirName) && !DirectoryExists(destDirName))
{
Directory.Move(sourceDirName, destDirName);
//源目录不存在 但目标目录存在
if (!DirectoryExists(sourceDirName) && DirectoryExists(destDirName))
return true;
}
else
return false;
return false;
} |
TreeView拖拽操作
private void treeView1_DragOver(object sender, DragEventArgs e)
{
TreeNode node2 = treeView1.GetNodeAt(treeView1.PointToClient(new Point(e.X, e.Y)));
//节点2不存在
//节点1 = 节点2
//节点1 往它的父一级节点拖拽
if ((node2 == null) ||(node1 == node2)|| (node1.Parent == node2))
{
treeView1.SelectedNode = node1;
SetTreeNodeColorDefault();
e.Effect = DragDropEffects.None;
return;
}
else
{
e.Effect = DragDropEffects.Move;
treeView1.SelectedNode = node2;
SetTreeNodeColorBlue();
//当一个父节点往它的子节点中拖拽时
while (node2.Parent != null)
{
if (node2.Parent == node1)
{
e.Effect = DragDropEffects.None;
return;
}
node2 = node2.Parent;
}
}
} |
private void treeView1_DragDrop(object sender, DragEventArgs e)
{
//拖拽的节点指向目标的 这个目标节点
TreeNode node2 = treeView1.GetNodeAt( treeView1.PointToClient(new Point(e.X, e.Y)) );
if (node1 != node2)
{
if (node1.Parent != node2)
{
string dir1 = myPath + "\\" + node1.FullPath;
string dir2 = myPath + "\\" + node2.FullPath;
textBox1.Text = dir1;
textBox2.Text = dir2;
if (MoveDirectory(textBox1.Text, textBox2.Text))
{
//MessageBox.Show("Finished");
// Remove drag node from parent
if (node1.Parent == null)
treeView1.Nodes.Remove(node1);
else
node1.Parent.Nodes.Remove(node1);
node2.Nodes.Add(node1);
treeView1.SelectedNode = node1;
node2.Expand();
}
}
}
} |
设置节点颜色
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
SetTreeNodeColorDefault();
} |
private void SetTreeNodeColorBlue()
{
if (node1 != null)
{
node1.BackColor = Color.FromArgb(51, 153, 255);//蓝色
node1.ForeColor = Color.White;
}
}
|
private void SetTreeNodeColorDefault()
{
if (node1 != null)
{
node1.BackColor = SystemColors.Window;
node1.ForeColor = Color.Black;
}
} |
附件列表