剛開始寫這個的時候是想利用c#的com+組建開發active圖片上傳控件,寫這篇博文的時候是完成了基本的我的電腦磁盤文件瀏覽的功能,所以想在這裏和大家分享,看看大家對後期的完成有沒有什麼好的意見。我這裏實現的很簡單,一個TreeView控件,一個ListBox控件。
程序啓動,進入main函數時,開始瀏覽我的電腦中磁盤的信息
public void CpuMessage()
{
DriveInfo[] dr = DriveInfo.GetDrives();
string driveName = "";
foreach (DriveInfo d in dr)
{
switch (d.DriveType)
{
case DriveType.Fixed:
driveName = "本地磁盤(" + d.Name.Substring(0,2) + ")";
break;
case DriveType.Removable:
driveName = "可移動磁盤(" + d.Name.Substring(0, 2) + ")";
break;
case DriveType.CDRom:
driveName = "DVD驅動器(" + d.Name.Substring(0, 2) + ")";
break;
case DriveType.Network:
driveName = "網絡驅動器(" + d.Name.Substring(0, 2) + ")";
break;
default :
driveName = "未知(" + d.Name + ")";
break;
}
this.treeView1.Nodes.Add(d.Name, driveName);
}
}
這時我的電腦的C,D,E,F。。。等等盤的信息就添加的treeview控件的第一個節點中了。由於考慮到用遞歸法逐層瀏覽每個節點下文件的信息,所需要的時間太長(因爲每個盤的文件夾確實很多,垂直方向上),所以我考慮到用數據點擊節點事件。當鼠標點擊每個節點時,開始執行尋找這個節點(既文件夾)下的所有一級子文件夾。這個就實現了再用戶需要的時候才遍歷,提高了性能。
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node.Nodes.Count > 0)
{
if (e.Node.IsExpanded)
{
e.Node.Collapse();
}
else
{
e.Node.Expand();
}
}
else
{
if (Directory.Exists(e.Node.Name))
{
try
{
string[] allDirectory = Directory.GetDirectories(e.Node.Name);
foreach (string s in allDirectory)
{
e.Node.Nodes.Add(s, s.Remove(0, s.LastIndexOf("//") + 1));
}
listBox1.Items.Clear();
string[] allFiles = Directory.GetFiles(e.Node.Name);
foreach (string sf in allFiles)
{
listBox1.Items.Add(sf.Remove(0, sf.LastIndexOf("//") + 1));
}
}
catch
{
}
}
e.Node.Expand();
}
}
並在同時尋找該節點文件夾下的所有文件。添加到右邊的ListBox控件中。這樣就完成的基本的瀏覽磁盤數據信息。寫這盤文章前,在網上找了很多例子,發現大同小異,不盡人意,所以才決定自己寫個簡單的來測試下。希望對跟我一開始有同樣問題的朋友有所幫助