Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# .NET Framework 4 ile Windows Forms uygulamalarında hiyerarşik verileri (ağaç yapısındaki verileri) görsel olarak sunmak için kullandığımız TreeView kontrolünü yakından inceleyeceğiz. Dosya sistemleri, kategoriler, menüler gibi iç içe geçmiş verileri düzenli ve anlaşılır bir şekilde göstermek için TreeView vazgeçilmez bir araçtır. Gelin, TreeView'in temel özelliklerini, düğüm (node) yönetimini ve olaylarını birlikte keşfedelim.
TreeView Kontrolü Nedir?
TreeView kontrolü, verileri ağaç yapısında, yani ana ve alt öğeler (parent-child nodes) şeklinde görüntüler. Her bir öğe bir düğüm (node) olarak adlandırılır ve TreeNode sınıfı ile temsil edilir. Düğümler genişletilebilir veya daraltılabilir, bu da kullanıcıların hiyerarşi içinde kolayca gezinmesini sağlar.
TreeView Kontrolünün Temel Özellikleri
TreeView kontrolü, ağaç yapısını özelleştirmek ve yönetmek için birçok önemli özelliğe sahiptir:
Nodes:TreeView'in en üst seviye düğümlerini (root nodes) içeren bir koleksiyondur. Bu koleksiyon aracılığıyla yeni ana düğümler ekleyebilir veya mevcut düğümleri yönetebiliriz.SelectedNode: Kullanıcı tarafından seçilen mevcut düğümü döndürür veya ayarlar.CheckBoxes: Eğertrueolarak ayarlanırsa, her düğümün yanında bir onay kutusu (checkbox) görüntülenir. Bu, kullanıcıların düğümleri seçip işaretlemesini sağlar.FullRowSelect: Eğertrueolarak ayarlanırsa, bir düğüme tıklandığında tüm satırın seçili görünmesini sağlar.HideSelection: Kontrol odak dışı kaldığında seçili düğümün vurgusunun gizlenip gizlenmeyeceğini belirler.ImageIndex,SelectedImageIndex,StateImageIndex: Düğümlerle ilişkilendirilecek resimlerin indekslerini belirler. Bu resimler,ImageListbileşeninden alınır.ImageList: Düğümlerin yanında görüntülenecek resimleri içerenImageListbileşenini ayarlar.ShowLines: Düğümler arasındaki bağlantı çizgilerinin gösterilip gösterilmeyeceğini belirler.ShowPlusMinus: Düğümlerin yanında genişletme/daraltma (+/-) işaretlerinin gösterilip gösterilmeyeceğini belirler.ShowRootLines: Kök düğümler ile alt düğümleri arasındaki çizgilerin gösterilip gösterilmeyeceğini belirler.LabelEdit: Eğertrueolarak ayarlanırsa, kullanıcıların düğüm metinlerini düzenlemesine izin verir.
TreeNode Sınıfı ve Özellikleri
TreeView içindeki her bir düğüm, TreeNode sınıfının bir örneğidir. TreeNode'ların da kendi özellikleri bulunur:
Text: Düğüm üzerinde görünen metin.Name: Düğümün benzersiz adı (kod içinde erişim için).Nodes: Bu düğümün alt düğümlerini içeren bir koleksiyon. Bu koleksiyon aracılığıyla bir düğüme alt düğümler ekleyebiliriz.Parent: Düğümün üst düğümünü döndürür.Tag: Düğümle ilişkilendirilebilecek herhangi bir nesneyi saklamak için kullanılır (örneğin, bir veritabanı ID'si).IsExpanded: Düğümün genişletilmiş (açık) olup olmadığını gösterir.IsSelected: Düğümün seçili olup olmadığını gösterir.ImageIndex,SelectedImageIndex: Bu düğüme özel resim indeksleri.
Düğüm Ekleme ve Yönetimi
Düğümleri TreeView'e eklemenin ve yönetmenin çeşitli yolları vardır:
1. Kök Düğüm Ekleme
TreeView'in Nodes koleksiyonuna doğrudan düğüm ekleyerek kök düğümler oluştururuz.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Tasarımcıda bir TreeView (treeView1) eklenmiş olduğunu varsayalım
// treeView1.Nodes koleksiyonuna yeni bir TreeNode ekle
TreeNode rootNode1 = new TreeNode("Kategoriler");
this.treeView1.Nodes.Add(rootNode1);
TreeNode rootNode2 = new TreeNode("Ürünler");
this.treeView1.Nodes.Add(rootNode2);
}
}
2. Alt Düğüm Ekleme
Mevcut bir TreeNode'un Nodes koleksiyonuna düğüm ekleyerek alt düğümler oluştururuz.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// treeView1 ve rootNode1'in yukarıdaki gibi tanımlandığını varsayalım
TreeNode rootNode1 = new TreeNode("Kategoriler");
this.treeView1.Nodes.Add(rootNode1);
// rootNode1'e alt düğümler ekle
TreeNode altNode1 = new TreeNode("Elektronik");
rootNode1.Nodes.Add(altNode1);
TreeNode altNode2 = new TreeNode("Giyim");
rootNode1.Nodes.Add(altNode2);
// Elektronik altına alt düğüm ekle
altNode1.Nodes.Add("Telefonlar");
altNode1.Nodes.Add("Bilgisayarlar");
// Tüm düğümleri genişlet (isteğe bağlı)
this.treeView1.ExpandAll();
}
}
3. Düğüm Temizleme
Tüm düğümleri temizlemek için Nodes.Clear() metodunu kullanırız.
this.treeView1.Nodes.Clear(); // Tüm düğümleri temizler
4. Düğüm Silme
Belirli bir düğümü silmek için Remove() veya RemoveAt() metotlarını kullanırız.
if (this.treeView1.SelectedNode != null)
{
this.treeView1.SelectedNode.Remove(); // Seçili düğümü sil
}
5. Düğüm Bulma
Belirli bir metne veya isme sahip düğümleri bulmak için Find() metodunu kullanabiliriz.
TreeNode[] bulunanDugumler = this.treeView1.Nodes.Find("Telefonlar", true); // İkinci parametre alt düğümlerde de arama yapmayı sağlar
if (bulunanDugumler.Length > 0)
{
MessageBox.Show("Telefonlar düğümü bulundu!");
this.treeView1.SelectedNode = bulunanDugumler[0]; // Bulunan ilk düğümü seç
this.treeView1.SelectedNode.Expand(); // Seçili düğümü genişlet
}
TreeView Olayları
TreeView kontrolü, kullanıcı etkileşimlerine ve düğüm durum değişikliklerine tepki vermek için çeşitli olaylar sunar:
AfterSelect: Bir düğüm seçildikten sonra tetiklenir. En sık kullanılan olaydır.BeforeSelect: Bir düğüm seçilmeden önce tetiklenir. Seçimi iptal etme imkanı sunar.AfterExpand: Bir düğüm genişletildikten sonra tetiklenir.BeforeExpand: Bir düğüm genişletilmeden önce tetiklenir. Genişletmeyi iptal etme imkanı sunar.AfterCollapse: Bir düğüm daraltıldıktan sonra tetiklenir.BeforeCollapse: Bir düğüm daraltılmadan önce tetiklenir. Daraltmayı iptal etme imkanı sunar.AfterCheck: Bir düğümün onay kutusu durumu değiştirildikten sonra tetiklenir (CheckBoxesözelliğitrueise).BeforeCheck: Bir düğümün onay kutusu durumu değiştirilmeden önce tetiklenir. Değişikliği iptal etme imkanı sunar.NodeMouseClick: Bir düğüme fare ile tıklandığında tetiklenir.NodeMouseDoubleClick: Bir düğüme fare ile çift tıklandığında tetiklenir.AfterLabelEdit: Düğüm metni düzenlendikten sonra tetiklenir (LabelEditözelliğitrueise).
Örnek: AfterSelect Olayı
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// treeView1'in yukarıdaki gibi düğümlerle doldurulduğunu varsayalım
this.treeView1.AfterSelect += new TreeViewEventHandler(treeView1_AfterSelect);
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
// Seçilen düğümün metnini MessageBox ile göster
MessageBox.Show("Seçilen Düğüm: " + e.Node.Text);
// Seçilen düğümün Tag özelliğine erişilebilir
// if (e.Node.Tag != null)
// {
// MessageBox.Show("Düğüm Tag'i: " + e.Node.Tag.ToString());
// }
}
}
ImageList ile İkon Kullanımı
Düğümlerin yanında ikonlar (resimler) görüntülemek, TreeView'i daha görsel ve bilgilendirici hale getirir. Bunun için bir ImageList bileşeni kullanılır.
using System.Drawing;
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Tasarımcıda bir TreeView (treeView1) ve bir ImageList (imageList1) eklenmiş olduğunu varsayalım
// imageList1'e bazı ikonlar eklemiş olalım (örneğin, bir klasör ikonu, bir dosya ikonu)
this.treeView1.ImageList = this.imageList1; // TreeView'e ImageList'i ata
TreeNode rootNode = new TreeNode("Belgelerim", 0, 0); // Metin, normal ikon indeksi, seçili ikon indeksi
this.treeView1.Nodes.Add(rootNode);
TreeNode subNode1 = new TreeNode("Raporlar", 1, 1); // Farklı ikonlar
rootNode.Nodes.Add(subNode1);
TreeNode subNode2 = new TreeNode("Resimler", 0, 0);
rootNode.Nodes.Add(subNode2);
this.treeView1.ExpandAll();
}
}
TreeNode oluştururken, ikinci parametre normal durumdaki ikonun indeksini, üçüncü parametre ise düğüm seçildiğinde kullanılacak ikonun indeksini belirtir. Bu indeksler, ImageList bileşenindeki resimlerin sırasına karşılık gelir.
Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile TreeView kontrolünün temel özelliklerini, düğüm yönetimini ve olaylarını detaylı bir şekilde inceledik. TreeView, hiyerarşik verileri görsel ve etkileşimli bir şekilde sunmak için güçlü bir araçtır ve dosya gezginleri, kategori listeleri, menüler gibi birçok uygulamada karşımıza çıkar. Umarım bu rehber, C# .NET Framework 4 ile uygulamalar geliştirirken size yardımcı olur. Bir sonraki yazımda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz. Webkolog.net'i takipte kalın!
Hepinize ağaç yapılı verilerle dolu ve başarılı geliştirme süreçleri dilerim!







0 yorum:
Yorum Gönder