国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

自己動手做一個小型“資源管理器”吧

2019-11-14 15:55:29
字體:
供稿:網(wǎng)友

自己動手做一個小型“資源管理器”吧

 

:tvDirectory是treeView控件,lvDirectory是listView控件

首先搭建一下界面:

左邊是treeView控件,右邊是listView控件。(listView的網(wǎng)格線只需把GridLins設(shè)置成True就可以了。

由于要用到IO流,所以別忘了導(dǎo)入命名空間:using System.IO;

 

我們只要創(chuàng)建一個文件類就可以了:

 1 public class MyFile 2     { 3         //文件長度 4         public float FileLength { get; set; } 5         //文件名 6         public string FileName { get; set; } 7         //文件路徑 8         public string FilePath { get; set; } 9         //文件類型10         public string FileType { get; set; }11     }

 

現(xiàn)在先來加載一下驅(qū)動器,四行代碼輕松搞定:

1 //加載驅(qū)動器2         PRivate void LoadRootNode()3         {4             TreeNode tn = new TreeNode();5             tn.Text = "D://";6             tn.Tag = "D://";7             this.tvDirectory.Nodes.Add(tn);8         }

 

接下來是一步步的綁定:

 1 private void BingInfo(TreeNode node)  2         { 3             //綁定子目錄 4             DirectoryInfo directoryInfo = new DirectoryInfo(node.Tag.ToString()); 5             DirectoryInfo[] dirs = directoryInfo.GetDirectories(); 6             foreach (DirectoryInfo di in dirs) 7             { 8                 TreeNode temp = new TreeNode(); 9                 temp.Text = di.Name;10                 temp.Tag = di.FullName;11                 node.Nodes.Add(temp);12             }13 14             //綁定本目錄中的文件15             FileInfo[] fileInfo = directoryInfo.GetFiles();16             List<MyFile> files = new List<MyFile>();17             foreach (FileInfo myFile in fileInfo)18             {19                 MyFile file = new MyFile();20                 file.FileName = myFile.Name;21                 file.FileLength = myFile.Length;22                 file.FileType = myFile.Extension;23                 file.FilePath = myFile.FullName;24                 files.Add(file);25             }26             //綁定listView27             ListViewItem item = null;28             this.lvDirectory.Items.Clear();29             foreach (MyFile file in files)30             {31                 item = new ListViewItem();32                 item.Text = file.FileName;33                 item.SubItems.Add(file.FileLength.ToString());34                 item.SubItems.Add(file.FileType);35                 item.SubItems.Add(file.FilePath);36                 this.lvDirectory.Items.Add(item);37             }

 

綁定listView也可以單獨寫成一個方法然后在BingInfo()方法中調(diào)用一下:

 1 public void ShowFiles(List<MyFile> files) 2         { 3             ListViewItem item = null; 4             this.lvDirectory.Items.Clear(); 5             foreach (MyFile file in files) 6             { 7                 item = new ListViewItem(); 8                 item.Text = file.FileName; 9                 item.SubItems.Add(file.FileLength.ToString());10                 item.SubItems.Add(file.FileType);11                 item.SubItems.Add(file.FilePath);12                 this.lvDirectory.Items.Add(item);13             }14 15         }

 

調(diào)用方法:

1 ShowFiles(files);

 

之后需要在treeView控件的AfterSelect事件中添加如下代碼:

1         private void tvDirectory_AfterSelect(object sender, TreeViewEventArgs e)2         {3             TreeNode node = this.tvDirectory.SelectedNode;4             this.BingInfo(node);5         }

 

再在Load中調(diào)用一下就可以正常查看顯示你所想要看的資源目錄了:

1 private void Form1_Load(object sender, EventArgs e)2         {3             LoadRootNode();4         }

 

既然是資源管理器,那么肯定要有文件的復(fù)制和刪除等基本功能,接下來實現(xiàn)復(fù)制刪除功能:

復(fù)制時需要彈出“瀏覽文件夾”窗口,這時需要用到FolderBrowserDialog類:

1             //提示用戶選擇文件夾2             FolderBrowserDialog fbd = new FolderBrowserDialog();3             DialogResult result = fbd.ShowDialog();

 

復(fù)制時如果選擇了正確的位置,則執(zhí)行復(fù)制操作:

1             if (result == DialogResult.OK)2             {3                 desPath = fbd.SelectedPath;4                 desPath += "//" + lvDirectory.SelectedItems[0].SubItems[0].Text;5                 //復(fù)制文件6                 File.Copy(sourcePath, desPath);7                 MessageBox.Show("復(fù)制成功!");8             }   

 

完整復(fù)制代碼如下:

 1 private void tsmiCopy_Click(object sender, EventArgs e) 2         { 3             if (this.lvDirectory.SelectedItems.Count == 0) 4             { 5                 return; 6             } 7             //提示用戶選擇文件夾 8             FolderBrowserDialog fbd = new FolderBrowserDialog(); 9             DialogResult result = fbd.ShowDialog();10 11             //源文件路徑12             string sourcePath = lvDirectory.SelectedItems[0].SubItems[3].Text;13             //目標(biāo)文件路徑14             string desPath = null;15             //如果正確選擇目標(biāo)位置,執(zhí)行復(fù)制操作16 17             if (result == DialogResult.OK)18             {19                 desPath = fbd.SelectedPath;20                 desPath += "//" + lvDirectory.SelectedItems[0].SubItems[0].Text;21                 //復(fù)制文件22                 File.Copy(sourcePath, desPath);23                 MessageBox.Show("復(fù)制成功!");24             }   25         }

 

接下來是刪除,刪除完要及時刷新:

1 this.lvDirectory.SelectedItems[0].Remove();

 

完整刪除代碼如下:

 1 private void tmsiDelete_Click(object sender, EventArgs e) 2         { 3             if (this.lvDirectory.SelectedItems.Count == 0) 4             { 5                 return; 6             } 7             //要刪除的文件 8             string sourcePath = lvDirectory.SelectedItems[0].SubItems[3].Text; 9             DialogResult result = MessageBox.Show(this, "確定要刪除嗎?", "警告!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);10             if (result == DialogResult.OK)11             {12                 File.Delete(sourcePath);13                 MessageBox.Show("刪除成功!");14             }15             //刷新一下16             this.lvDirectory.SelectedItems[0].Remove();17         }

以上就是一個小型的資源管理器的制作過程了。

完成之后界面:

這里我只寫了D盤,大家可以接著寫其他的盤符。

 

跨驅(qū)動器復(fù)制方法:

 1 private void CopyDirectoryAndFiles(string des, DirectoryInfo srcDir) 2         { 3             if (!des.EndsWith("//")) 4             { 5                 des += "//"; 6             } 7             string desPath = des + srcDir.Name + "//"; 8             if(!Directory.Exists(desPath)) 9             {10                 Directory.CreateDirectory(desPath);11             }12              13             foreach (FileInfo file in srcDir.GetFiles())14             {15                 file.CopyTo(desPath + file.Name, true);16             }17             foreach (DirectoryInfo dirinfo in srcDir.GetDirectories())18             {19                 CopyDirectoryAndFiles(desPath, dirinfo);20             }21         }

 

 

C#路徑書寫的問題:

如果寫成

1 string path="D:/Text.txt";

 

程序會報“無法識別的轉(zhuǎn)義序列”錯誤,所以C#提供了兩種方法:

1 (第一種)將路徑改為“D://Text.txt”
1 (第二種)@“D://Text.txt”

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 浦北县| 柘城县| 庆城县| 渑池县| 航空| 汉阴县| 凭祥市| 龙门县| 荥阳市| 平定县| 西平县| 文登市| 仁怀市| 阿克| 浮梁县| 云浮市| 兰西县| 信阳市| 盈江县| 烟台市| 长寿区| 二手房| 西乌珠穆沁旗| 凤凰县| 沾益县| 英吉沙县| 阿合奇县| 舒城县| 平山县| 兴安县| 满洲里市| 潞城市| 巴林右旗| 平顺县| 尼玛县| 五大连池市| 泗洪县| 巴林左旗| 新泰市| 贵州省| 桓仁|