Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En av fördelarna med Visual Studio är möjligheten att skapa professionella Windows Forms-program på kort tid. Ett vanligt scenario är att skapa ett användargränssnitt (UI) med ListView och TreeView kontroller som liknar Windows Explorer-funktionen i Windows-operativsystem. Utforskaren visar en hierarkisk struktur för filer och mappar på en användares dator.
Skapa formuläret som innehåller en ListView- och TreeView-kontroll
Peka på Nytt på Arkiv-menyn och klicka sedan på Projekt.
Gör följande i dialogrutan Nytt projekt:
I kategorierna väljer du antingen Visual Basic eller Visual C#.
I listan med mallar väljer du Windows Forms Application.
Klicka på OK. Ett nytt Windows Forms-projekt skapas.
Lägg till en SplitContainer-kontroll i formuläret och ställ in dess Dock-egenskap till Fill.
Lägg till en ImageList med namnet
imageList1i formuläret och använd fönstret Egenskaper för att lägga till två bilder: en mappbild och en dokumentbild i den ordningen.Lägg till en TreeView kontroll med namnet
treeview1i formuläret och placera den på vänster sida av SplitContainer-kontrollen. I fönstret Egenskaper förtreeView1göra följande:Lägg till en ListView kontroll med namnet
listView1i formuläret och placera den på höger sida av SplitContainer-kontrollen. I fönstret Egenskaper förlistview1göra följande:Öppna columnheader-samlingsredigeraren genom att klicka på ellipserna (
) i egenskapen Columns**.** Lägg till tre kolumner och ange egenskapen Text till Name,TyperespektiveLast Modified. Klicka på OK för att stänga dialogrutan.Ange egenskapen SmallImageList till
imageList1.
Implementera koden för att fylla i TreeView med noder och undernoder. Lägg till den här koden i klassen
Form1.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); } }Private Sub PopulateTreeView() Dim rootNode As TreeNode Dim info As New DirectoryInfo("../..") If info.Exists Then rootNode = New TreeNode(info.Name) rootNode.Tag = info GetDirectories(info.GetDirectories(), rootNode) treeView1.Nodes.Add(rootNode) End If End Sub Private Sub GetDirectories(ByVal subDirs() As DirectoryInfo, _ ByVal nodeToAddTo As TreeNode) Dim aNode As TreeNode Dim subSubDirs() As DirectoryInfo Dim subDir As DirectoryInfo For Each subDir In subDirs aNode = New TreeNode(subDir.Name, 0, 0) aNode.Tag = subDir aNode.ImageKey = "folder" subSubDirs = subDir.GetDirectories() If subSubDirs.Length <> 0 Then GetDirectories(subSubDirs, aNode) End If nodeToAddTo.Nodes.Add(aNode) Next subDir End SubEftersom den föregående koden använder System.IO namnområde lägger du till lämplig användnings- eller importuttryck överst i formuläret.
using System.IO;Imports System.IOAnropa konfigurationsmetoden från föregående steg i formulärets konstruktor eller Load händelsehanteringsmetod. Lägg till den här koden i formulärkonstruktorn.
public Form1() { InitializeComponent(); PopulateTreeView(); }Public Sub New() InitializeComponent() PopulateTreeView() End SubHantera NodeMouseClick-händelsen för
treeview1, och implementera koden för att fylla ilistview1med en nods innehåll när en nod klickas. Lägg till den här koden i klassenForm1.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); }Private Sub treeView1_NodeMouseClick(ByVal sender As Object, _ ByVal e As TreeNodeMouseClickEventArgs) _ Handles treeView1.NodeMouseClick Dim newSelected As TreeNode = e.Node listView1.Items.Clear() Dim nodeDirInfo As DirectoryInfo = _ CType(newSelected.Tag, DirectoryInfo) Dim subItems() As ListViewItem.ListViewSubItem Dim item As ListViewItem = Nothing Dim dir As DirectoryInfo For Each 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) Next dir Dim file As FileInfo For Each 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) Next file listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize) End SubOm du använder C# kontrollerar du att den NodeMouseClick händelsen är associerad med dess händelsehanteringsmetod. Lägg till den här koden i formulärkonstruktorn.
this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
Testa programmet
Nu kan du testa formuläret för att se till att det fungerar som förväntat.
Testa formuläret
Tryck på F5 för att köra programmet.
Du ser ett delat formulär som innehåller en TreeView kontroll som visar projektkatalogen till vänster och en ListView kontroll till höger med tre kolumner. Du kan bläddra i TreeView genom att välja katalognoder och ListView fylls i med innehållet i den valda katalogen.
Nästa steg
Det här programmet ger dig ett exempel på hur du kan använda TreeView och ListView kontroller tillsammans. Mer information om dessa kontroller finns i följande avsnitt:
Så här lägger du till anpassad information i en TreeView- eller ListView-kontroll (Windows-formulär)
Se även
.NET Desktop feedback