C#打造自己的文件瀏覽器
發(fā)表時(shí)間:2024-05-13 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]C#的功能十分強(qiáng)大,用它可以輕松地做出屬于自己的文件瀏覽器。下面簡(jiǎn)單地介紹一下文件瀏覽器的大致實(shí)現(xiàn)過(guò)程。其中涉及的有關(guān)這些控件的具體用法可參見(jiàn)C#的聯(lián)機(jī)幫助! ∧阈枰玫綆讉(gè)控件: TreeView(用于顯示顯示目錄樹(shù)); ListView(用于顯示文件和目錄列表); Splitte...
C#的功能十分強(qiáng)大,用它可以輕松地做出屬于自己的文件瀏覽器。下面簡(jiǎn)單地介紹一下文件瀏覽器的大致實(shí)現(xiàn)過(guò)程。其中涉及的有關(guān)這些控件的具體用法可參見(jiàn)C#的聯(lián)機(jī)幫助。
你需要用到幾個(gè)控件:
TreeView(用于顯示顯示目錄樹(shù));
ListView(用于顯示文件和目錄列表);
Splitter(用于允許用戶調(diào)整TreeView和ListView的大小);
其它的如:MainMenu,ToolBar,StatusBar,ImageList等等就看你的實(shí)際需要了。
首先,新建一個(gè)C#項(xiàng)目(Windows應(yīng)用程序),命名為MyFileView,將窗口命名為mainForm,調(diào)整主窗口大小(Size)。添加MainMenu,ToolBar,StatusBar,ImageList等控件。
然后,添加TreeView控件,命名為treeView,Dock屬性設(shè)為L(zhǎng)eft,再添加Splitter控件,同樣將Dock屬性設(shè)為L(zhǎng)eft。最后添加ListView控件,命名為listView,Dock屬性設(shè)為Fill。
界面做好了,那么怎樣才能在這個(gè)界面里顯示文件夾和文件呢?這需要我們添加代碼來(lái)實(shí)現(xiàn)。
首先引用以下名字空間:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO ;
using System .Runtime .InteropServices ;
在mainForm_Load事件中添加以下代碼,用于在treeView控件中顯示目錄樹(shù):
private void mainForm_Load(object sender, System.EventArgs e)
//獲取邏輯驅(qū)動(dòng)器
string[] LogicDrives=System.IO .Directory .GetLogicalDrives();
TreeNode[] cRoot =new TreeNode[LogicDrives.Length];
for (int i=0;i< LogicDrives.Length ;i++)
{
TreeNode drivesNode=new TreeNode(LogicDrives[i]);
treeView.Nodes .Add (drivesNode);
if (LogicDrives[i]!="A:\\" && LogicDrives[i]!="B:\\" )
getSubNode(drivesNode,true);
}
}
其中,getSubNode為一方法,用于獲取子目錄,以創(chuàng)建目錄樹(shù)節(jié)點(diǎn),參數(shù):PathName為獲取的子目錄在此節(jié)點(diǎn)下創(chuàng)建子節(jié)點(diǎn),參數(shù)isEnd:結(jié)束標(biāo)志,true則結(jié)束。
private void getSubNode(TreeNode PathName,bool isEnd)
{
if(!isEnd)
return; //exit this
TreeNode curNode;
DirectoryInfo[] subDir;
DirectoryInfo curDir=new DirectoryInfo (PathName.FullPath);
try
{
subDir=curDir.GetDirectories();
}
catch{}
foreach(DirectoryInfo d in subDir)
{
curNode=new TreeNode(d.Name);
PathName.Nodes .Add (curNode);
getSubNode(curNode,false);
}
}
當(dāng)鼠標(biāo)單擊目錄節(jié)點(diǎn)左邊的+號(hào)時(shí),節(jié)點(diǎn)將展開(kāi),此時(shí),應(yīng)在AfterExpand事件中加入以下代碼,以獲取此目錄下的子目錄節(jié)點(diǎn):
private void treeView_AfterExpand(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
try
{
foreach(TreeNode tn in e.Node .Nodes )
{
if (!tn.IsExpanded)
getSubNode(tn,true);
}
}
catch{;}
}
當(dāng)鼠標(biāo)單擊選中目錄節(jié)點(diǎn)時(shí),右邊的listView控件應(yīng)顯示此目錄下的文件和目錄,代碼如下:
private void treeView_AfterSelect(object sender,System.Windows.Forms.TreeViewEventArgs e)
{
listView.Items.Clear();
DirectoryInfo selDir=new DirectoryInfo(e.Node.FullPath );
DirectoryInfo[] listDir;
FileInfo[] listFile;
try
{
listDir=selDir.GetDirectories();
listFile=selDir.GetFiles();
}
catch{}
foreach (DirectoryInfo d in listDir)
listView.Items .Add (d.Name,6);
foreach (FileInfo d in listFile)
listView.Items .Add (d.Name);
}
至此,一個(gè)簡(jiǎn)單的文件瀏覽器就做成了,當(dāng)然,它還很初級(jí),甚至不能用它打開(kāi)一個(gè)文件,加另外,它也不能顯示文件和目錄的圖標(biāo),沒(méi)有進(jìn)行錯(cuò)誤處理,沒(méi)有進(jìn)行安全控制……它能給你的只是一個(gè)思路。