Visual C# 2010 实现资源管理器
演練:使用設計器創建帶有 ListView 和 TreeView 控件的資源管理器樣式的界面
Visual Studio 2010 其他版本?
Visual Studio 的一個優點是能夠在短時間內創建具有專業級外觀的 Windows 窗體應用程序。?通常情況下,創建一個帶有?ListView?和?TreeView?控件的用戶界面 (UI),該界面類似于 Windows 操作系統的 Windows 資源管理器。?Windows 資源管理器顯示了用戶計算機上的文件和文件夾的層次結構。
| 顯示的對話框和菜單命令可能會與“幫助”中的描述不同,具體取決于您現用的設置或版本。?若要更改設置,請在“工具”菜單上選擇“導入和導出設置”。?有關更多信息,請參見?使用設置。 |
創建包含 ListView 和 TreeView 控件的窗體
在“文件”菜單上指向“新建”,再單擊“項目”。
在“新建項目”對話框中,請執行以下操作:
在類別中選擇“Visual Basic”或“Visual C#”。
在模板列表中,選擇“Windows 窗體應用程序”。
單擊“確定”。?隨即便會創建一個新的 Windows 窗體項目。
向該窗體添加一個?SplitContainer?控件,并將其?Dock?屬性設置為?Fill。
向該窗體中添加一個名為?imageList1?的?ImageList,然后使用“屬性”窗口按所列順序添加兩個圖像:一個文件夾圖像和一個文檔圖像。
向該窗體添加一個名為?treeview1?的?TreeView?控件,將其置于?SplitContainer?控件的左側。?在?treeView1?的“屬性”窗口中,執行以下操作:
將?Dock?屬性設置為?Fill。
將?ImageList?屬性設置為?imagelist1。
向該窗體中添加一個名為?listView1?的?ListView?控件,將其置于?SplitContainer?控件的右側。?在?listview1?的“屬性”窗口中,執行以下操作:
將?Dock?屬性設置為?Fill。
將?View?屬性設置為?Details。
單擊?Columns?屬性中的橢圓 (),以打開 ColumnHeader 集合編輯器。添加三列,并將其?Text?屬性分別設置為?Name、Type?和?Last Modified。?單擊“確定”關閉對話框。
將?SmallImageList?屬性設置為?imageList1。
實現代碼以便將節點和子節點填充到?TreeView?中。?將該代碼添加到?Form1?類中。
C# VB private void PopulateTreeView(){TreeNode rootNode;DirectoryInfo info = new DirectoryInfo(@"../..");if (info.Exists){rootNode = new TreeNode(info.Name);rootNode.Tag = info;GetDirectories(info.GetDirectories(), rootNode);treeView1.Nodes.Add(rootNode);}}private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo){TreeNode aNode;DirectoryInfo[] subSubDirs;foreach (DirectoryInfo subDir in subDirs){aNode = new TreeNode(subDir.Name, 0, 0);aNode.Tag = subDir;aNode.ImageKey = "folder";subSubDirs = subDir.GetDirectories();if (subSubDirs.Length != 0){GetDirectories(subSubDirs, aNode);}nodeToAddTo.Nodes.Add(aNode);}}由于以前的代碼使用 System.IO 命名空間,因此需要在窗體頂部添加 using 或 import 語句。
C# VB using System.IO;在窗體的構造函數或?Load?事件處理方法中,調用上一步中的設置方法。?將該代碼添加到窗體構造函數中。
C# VB public Form1(){InitializeComponent();PopulateTreeView();}處理?treeview1?的?NodeMouseClick?事件,實現代碼以便在單擊某個節點時,用該節點的內容來填充?listview1。?將該代碼添加到?Form1?類中。
C# VB void treeView1_NodeMouseClick(object sender,TreeNodeMouseClickEventArgs e) {TreeNode newSelected = e.Node;listView1.Items.Clear();DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;ListViewItem.ListViewSubItem[] subItems;ListViewItem item = null;foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories()){item = new ListViewItem(dir.Name, 0);subItems = new ListViewItem.ListViewSubItem[]{new ListViewItem.ListViewSubItem(item, "Directory"), new ListViewItem.ListViewSubItem(item, dir.LastAccessTime.ToShortDateString())};item.SubItems.AddRange(subItems);listView1.Items.Add(item);}foreach (FileInfo file in nodeDirInfo.GetFiles()){item = new ListViewItem(file.Name, 1);subItems = new ListViewItem.ListViewSubItem[]{ new ListViewItem.ListViewSubItem(item, "File"), new ListViewItem.ListViewSubItem(item, file.LastAccessTime.ToShortDateString())};item.SubItems.AddRange(subItems);listView1.Items.Add(item);}listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);}如果使用的是 C#,請確保將?NodeMouseClick?事件與其事件處理方法相關聯。?將該代碼添加到窗體構造函數中。
C# this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);現在可以測試窗體,以確保它的行為與預期相同。
測試窗體
-
按 F5 運行應用程序。
您將看到一個包含?TreeView?控件的拆分窗體,該窗體左側顯示您的項目目錄,右側是分為三列的?ListView?控件。?選擇目錄節點可以遍歷?TreeView,而?ListView?中將填充選定目錄的內容。
轉載于:https://www.cnblogs.com/txw1958/archive/2012/07/30/2616074.html
總結
以上是生活随笔為你收集整理的Visual C# 2010 实现资源管理器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++:不用申请变量交换两个变量的值
- 下一篇: microsoft visual sou