c# winform項目treeview控件綁定本地電腦磁盤信息,讀取文件夾信息,顯示文件夾內文件內容

        剛開始寫這個的時候是想利用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控件中。這樣就完成的基本的瀏覽磁盤數據信息。寫這盤文章前,在網上找了很多例子,發現大同小異,不盡人意,所以才決定自己寫個簡單的來測試下。希望對跟我一開始有同樣問題的朋友有所幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章