新手求教 资源管理器 listview的问题

温水煮蛙的蛙 2014-05-19 09:54:00
using System;
using System.Windows.Forms;
using System.IO;


namespace WindowsExplorer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_SizeChanged(object sender, EventArgs e)
{
this.tscAdress.Width = this.toolStrip2.Width - 90;
}

private void Form1_Load(object sender, EventArgs e)
{

TreeNode Mycomputer = this.treeView1.Nodes[0];
DriveInfo[] drivers = DriveInfo.GetDrives();
//循环添加我的电脑的子节点
foreach (DriveInfo driver in drivers)
{
TreeNode node = new TreeNode(driver.Name);
node.ImageKey = "drive.png";
node.SelectedImageKey = "drive.png";
node.Tag = driver.RootDirectory.FullName;
Mycomputer.Nodes.Add(node);
//添加到listView
this.listView1.Items.Add(new ListViewItem(new string[] { driver.Name, "磁盘", "", "" }, "drive.png"));
}




}
/// <summary>
/// 添加被选中项的子节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
{
foreach (TreeNode node in e.Node.Nodes)
{

DirectoryInfo driver = new DirectoryInfo(node.Tag.ToString());
DirectoryInfo[] subdrivers = null;

//跳过无访问权限的文件
try { subdrivers = driver.GetDirectories(); }
catch (UnauthorizedAccessException) { }
catch (IOException) { }

if (subdrivers != null)
{
foreach (DirectoryInfo subdriver in subdrivers)
{
TreeNode subNode = new TreeNode(subdriver.Name);
subNode.ImageKey = "folder_add.png";
subNode.SelectedImageKey = "folder.png";
subNode.Tag = subdriver.FullName;
node.Nodes.Add(subNode);
}
}
}
}
/// <summary>
/// 列表显示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{//地址栏显示
if (e.Action == TreeViewAction.ByKeyboard || e.Action == TreeViewAction.ByMouse)
{
if (e.Node.Tag == null)
{
this.tscAdress.Text = e.Node.Text;
}
else
{
this.tscAdress.Text = e.Node.Tag.ToString();
}
}


this.listView1.Items.Clear();
if (e.Node.Tag != null)
{
string path = e.Node.Tag.ToString();
DirectoryInfo folder = new DirectoryInfo(path);
//填充文件夹
DirectoryInfo[] subfolders = null;
try
{
subfolders = folder.GetDirectories();

}
catch (UnauthorizedAccessException)
{

}
if (subfolders != null)
{
foreach (DirectoryInfo subfolder in subfolders)
{
listView1.Items.Add(new ListViewItem(new string[] { subfolder.Name, "文件夹", "", "" }, "folder.png"));
}
}

//填充文件
try
{
FileInfo[] files = folder.GetFiles();


foreach (FileInfo file in files)
{
listView1.Items.Add(new ListViewItem(new string[] { file.Name, "文件", GetFileSize(file), file.LastWriteTime.ToString() }, "page.png"));

}
}
catch (UnauthorizedAccessException)
{ }
}

}
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{

try
{
string path = this.listView1.SelectedItems[0].Tag.ToString();
DirectoryInfo folder = new DirectoryInfo(path);
FileInfo[] files = folder.GetFiles();

this.listView1.Items.Clear();//清空列表

//填充文件夹

DirectoryInfo[] subfolders = folder.GetDirectories();
if (subfolders != null)
{
foreach (DirectoryInfo subfolder in subfolders)
{
listView1.Items.Add(new ListViewItem(new string[] { subfolder.Name, "文件夹", "", "" }, "folder.png"));
}
}
//填充文件

foreach (FileInfo file in files)
{
listView1.Items.Add(new ListViewItem(new string[] { file.Name, "文件", GetFileSize(file), file.LastWriteTime.ToString() }, "page.png"));

}
}
catch (UnauthorizedAccessException)
{ }
catch (NullReferenceException)
{ }

}
}
}
//load中 添加到listView
// this.listView1.Items.Add(new ListViewItem(new string[] { driver.Name, "磁盘", "", "" }, "drive.png"));
//没效果。
// listView1_MouseDoubleClick中string path = this.listView1.SelectedItems[0].Tag.ToString(); 出现异常
//新手求教。
...全文
114 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小生我怕怕 2014-05-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/chen_zw/article/details/7910324
exception92 2014-05-19
  • 打赏
  • 举报
回复
exception92 2014-05-19
  • 打赏
  • 举报
回复
SelectedItems[0].Tag 这两者 某个为空。
温水煮蛙的蛙 2014-05-19
  • 打赏
  • 举报
回复
需要解决空值的问题 我尝试SelectedItems[0].Text 有值 但是用SelectedItems[0].Tag 是空值

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧