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ğertrue
olarak 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ğertrue
olarak 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,ImageList
bileşeninden alınır.ImageList
: Düğümlerin yanında görüntülenecek resimleri içerenImageList
bileş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ğertrue
olarak 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ğitrue
ise).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ğitrue
ise).
Ö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