语言是winform,服务器端搭建了ftp服务,我现在想法是一个tree view控件,一个list view控件,tree view控件怎么显示服务器目录
http://download.csdn.net/detail/caozhy/4169965
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
treeView1.Nodes.Add(new TreeNode("文档管理系统", DriveInfo.GetDrives()
.Select(x => new TreeNode(x.Name) { Tag = x }).ToArray()) { Tag = "root" });
}
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Node.Nodes.Cast<TreeNode>().ToList().ForEach(x =>
{
try
{
if (x.Nodes.Count == 0)
{
TreeNode[] nodes = new TreeNode[] { };
if (x.Tag.GetType() == typeof(DriveInfo))
{
var item = x.Tag as DriveInfo;
nodes = Directory.GetDirectories(item.Name)
.Select(y => new DirectoryInfo(y))
.Select(y => new TreeNode(y.Name) { Tag = y })
.ToArray();
}
if (x.Tag.GetType() == typeof(DirectoryInfo))
{
var item = x.Tag as DirectoryInfo;
nodes = Directory.GetDirectories(item.FullName)
.Select(y => new DirectoryInfo(y))
.Select(y => new TreeNode(y.Name) { Tag = y })
.ToArray();
}
x.Nodes.AddRange(nodes);
}
}
catch { }
});
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Tag.GetType() == typeof(string) && e.Node.Text == "文档管理系统")
{
listView1.Items.AddRange(DriveInfo.GetDrives()
.Select(x => new ListViewItem(new string[] { x.Name, x.DriveType.ToString(), x.DriveType == DriveType.Fixed ? (x.TotalSize / 1048576 / 1024).ToString() + "GB" : "" }))
.ToArray());
}
if (e.Node.Tag.GetType() == typeof(DriveInfo))
{
listView1.Items.Clear();
listView1.Items.AddRange(Directory.GetDirectories((e.Node.Tag as DriveInfo).Name)
.Select(x => new DirectoryInfo(x)).OrderBy(x => x.Name)
.Select(x => new ListViewItem(new string[] { x.Name, "Folder", "", x.CreationTime.ToString()})).ToArray());
listView1.Items.AddRange(Directory.GetFiles((e.Node.Tag as DriveInfo).Name, "*.*", SearchOption.TopDirectoryOnly)
.Select(x => new FileInfo(x)).OrderBy(x => x.Name)
.Select(x => new ListViewItem(new string[] { x.Name, "File", (x.Length / 1024).ToString() + "KB", x.CreationTime.ToString() })).ToArray());
}
if (e.Node.Tag.GetType() == typeof(DirectoryInfo))
{
listView1.Items.Clear();
listView1.Items.AddRange(Directory.GetDirectories((e.Node.Tag as DirectoryInfo).FullName)
.Select(x => new DirectoryInfo(x)).OrderBy(x => x.Name)
.Select(x => new ListViewItem(new string[] { x.Name, "Folder", "", x.CreationTime.ToString() })).ToArray());
listView1.Items.AddRange(Directory.GetFiles((e.Node.Tag as DirectoryInfo).FullName, "*.*", SearchOption.TopDirectoryOnly)
.Select(x => new FileInfo(x)).OrderBy(x => x.Name)
.Select(x => new ListViewItem(new string[] { x.Name, "File", (x.Length / 1024).ToString() + "KB", x.CreationTime.ToString() })).ToArray());
}
}
private void statusStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}