İzlenecek yol: Tasarımcıyı Kullanarak ListView ve TreeView Denetimleri ile Gezgin Stilinde bir Arabirim Oluşturma
Visual Studio'nun avantajlarından biri, kısa bir süre içinde profesyonel görünümlü Windows Forms uygulamaları oluşturabilmektir. Yaygın bir senaryo, windows işletim sistemlerinin Windows Gezgini özelliğine benzeyen ve TreeView denetimleriyle ListView bir kullanıcı arabirimi (UI) oluşturmaktır. Windows Gezgini, bir kullanıcının bilgisayarındaki dosya ve klasörlerin hiyerarşik yapısını görüntüler.
ListView ve TreeView denetimi içeren formu oluşturmak için
Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın.
Yeni Proje iletişim kutusunda aşağıdakileri yapın:
Kategorilerde Visual Basic veya Visual C# öğesini seçin.
Şablon listesinde Windows Forms Uygulaması'nı seçin.
Tamam'a tıklayın. Yeni bir Windows Forms projesi oluşturulur.
Forma bir SplitContainer denetim ekleyin ve özelliğini olarak FillayarlayınDock.
Forma adlı bir ImageList ad
imageList1
ekleyin ve Özellikler penceresi kullanarak iki resim ekleyin: bir klasör görüntüsü ve bir belge görüntüsü, bu sırayla.Forma adlı
treeview1
bir TreeView denetim ekleyin ve denetimin sol tarafına SplitContainer yerleştirin. Özellikler penceresitreeView1
aşağıdakileri yapın:Forma adlı
listView1
bir ListView denetim ekleyin ve denetimin sağ tarafına SplitContainer yerleştirin. Özellikler penceresilistview1
aşağıdakileri yapın:Özelliğindeki üç noktaya (
) tıklayarak ColumnHeader Koleksiyon Düzenleyicisi'ni Columns açın**.** Üç sütun ekleyin ve bunların Text özelliğini
Name
sırasıyla ,Type
veLast Modified
olarak ayarlayın. Tamam’a tıklayarak iletişim kutusunu kapatın.özelliğini şu şekilde ayarlayın:SmallImageList
imageList1.
düğümleri ve alt düğümleri ile doldurmak TreeView için kodu uygulayın. Bu kodu sınıfına
Form1
ekleyin.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 Sub
Önceki kod System.IO ad alanını kullandığından formun en üstüne uygun using veya import deyimini ekleyin.
using System.IO;
Imports System.IO
Formun oluşturucusunda veya Load olay işleme yönteminde önceki adımda yer alan set-up yöntemini çağırın. Bu kodu form oluşturucusunun içine ekleyin.
public Form1() { InitializeComponent(); PopulateTreeView(); }
Public Sub New() InitializeComponent() PopulateTreeView() End Sub
olayını
treeview1
işleyin NodeMouseClick ve bir düğüme tıklandığında düğümün içeriğiyle doldurulacaklistview1
kodu uygulayın. Bu kodu sınıfınaForm1
ekleyin.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 Sub
C# kullanıyorsanız, olayı olay işleme yöntemiyle ilişkilendirdiğinizden NodeMouseClick emin olun. Bu kodu form oluşturucusunun içine ekleyin.
this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
Uygulamayı Test Etme
Artık formu test edebilir ve beklendiği gibi davrandığından emin olabilirsiniz.
Formu test etmek için
Uygulamayı çalıştırmak için F5'e basın.
Proje dizininizi sol tarafta görüntüleyen bir TreeView denetim ve sağ tarafta üç sütunlu bir denetim içeren bölünmüş bir ListView form görürsünüz. dizin düğümlerini TreeView seçerek arasında geçiş yapabilirsiniz ve ListView içindekiler seçili dizinin içeriğiyle doldurulur.
Sonraki Adımlar
Bu uygulama, birlikte kullanabileceğiniz TreeView ve ListView denetleyebileceğiniz bir yol örneği sunar. Bu denetimler hakkında daha fazla bilgi için aşağıdaki konulara bakın:
Ayrıca bkz.
.NET Desktop feedback
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin