7 Temmuz 2012 Cumartesi

C# ile ListView

Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# .NET Framework 4 ile Windows Forms uygulamalarında verileri listelemek ve detaylı bir şekilde görüntülemek için sıklıkla kullandığımız ListView kontrolünü yakından inceleyeceğiz. ListView, özellikle Windows Gezgini'ndeki dosya listeleri gibi, verileri farklı görünümlerde (detaylı, ikonlu, listeli) sunma yeteneğiyle öne çıkan çok yönlü bir kontroldür. Gelin, ListView'in temel özelliklerini, farklı görünümlerini, veri ekleme yöntemlerini ve olaylarını birlikte keşfedelim.

ListView Kontrolü Nedir?

ListView kontrolü, bir veri koleksiyonunu farklı düzenlerde (görünümlerde) görüntülemek için kullanılır. Her bir veri öğesi, bir ListViewItem nesnesi olarak temsil edilir. Özellikle "Details" görünümünde, verileri sütunlar halinde düzenleyerek tablo benzeri bir yapı sunar, bu da kullanıcıların verileri daha kolay incelemesini sağlar.

ListView Kontrolünün Temel Özellikleri

ListView kontrolü, verilerin sunumunu ve etkileşimini özelleştirmek için birçok önemli özelliğe sahiptir:

  • View: ListView'in verileri nasıl görüntüleyeceğini belirler. En yaygın kullanılanı View.Details'tir, bu görünümde sütunlar ve alt öğeler kullanılır. Diğer görünümler LargeIcon, SmallIcon, List ve Tile'dır.
  • Columns: View özelliği Details olarak ayarlandığında, ListView'deki sütunları yöneten bir koleksiyondur. Her bir sütun bir ColumnHeader nesnesi ile temsil edilir.
  • Items: ListView'deki tüm ana öğeleri (ListViewItem nesnelerini) içeren bir koleksiyondur.
  • SelectedItems: Kullanıcı tarafından seçilen ListViewItem nesnelerini içeren bir koleksiyondur.
  • SmallImageList: SmallIcon ve Details görünümlerinde küçük ikonları görüntülemek için kullanılan ImageList bileşeni.
  • LargeImageList: LargeIcon görünümünde büyük ikonları görüntülemek için kullanılan ImageList bileşeni.
  • CheckBoxes: Eğer true olarak ayarlanırsa, her öğenin yanında bir onay kutusu (checkbox) görüntülenir.
  • FullRowSelect: Eğer true olarak ayarlanırsa, bir öğe seçildiğinde tüm satırın seçili görünmesini sağlar.
  • GridLines: Eğer true olarak ayarlanırsa, Details görünümünde satır ve sütunlar arasında kılavuz çizgileri görüntülenir.
  • MultiSelect: Kullanıcının birden fazla öğe seçmesine izin verilip verilmediğini belirler (true veya false).
  • Sorting: Öğelerin nasıl sıralanacağını belirler (None, Ascending, Descending).

ListViewItem ve ListViewSubItem Sınıfları

ListView'deki her bir satır, bir ListViewItem nesnesi ile temsil edilir. Bir ListViewItem'ın ilk sütundaki verisi, öğenin Text özelliğidir. Diğer sütunlardaki veriler ise ListViewItem'ın SubItems koleksiyonu aracılığıyla eklenen ListViewSubItem nesneleriyle temsil edilir.

ListView Kullanım Senaryoları

1. Sütun Ekleme (Details Görünümü İçin)

ListView'i Details görünümünde kullanmak için öncelikle sütun başlıklarını (ColumnHeader) tanımlamamız gerekir. Bu sütunlar, verilerin hangi başlıklar altında görüntüleneceğini belirler.

using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // Tasarımcıda bir ListView (listView1) eklenmiş olduğunu varsayalım

        this.listView1.View = View.Details; // Görünümü Detaylar olarak ayarla
        this.listView1.GridLines = true;    // Kılavuz çizgilerini göster
        this.listView1.FullRowSelect = true; // Tüm satırı seçilebilir yap

        // Sütun başlıklarını ekle
        this.listView1.Columns.Add("Ürün Adı", 150); // Başlık, Genişlik
        this.listView1.Columns.Add("Fiyat", 80, HorizontalAlignment.Right); // Başlık, Genişlik, Hizalama
        this.listView1.Columns.Add("Stok Miktarı", 100, HorizontalAlignment.Center);
    }
}
2. Öğeleri Ekleme (ListViewItem ve ListViewSubItem)

Sütunlar tanımlandıktan sonra, ListViewItem ve ListViewSubItem kullanarak verilere ekleyebiliriz.

using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // Yukarıdaki gibi sütunların tanımlandığını varsayalım

        // Yeni bir ListViewItem oluştur (ilk sütun için metin)
        ListViewItem item1 = new ListViewItem("Laptop");
        // Alt öğeleri ekle (diğer sütunlar için)
        item1.SubItems.Add("1200 TL");
        item1.SubItems.Add("50 Adet");
        this.listView1.Items.Add(item1); // ListView'e öğeyi ekle

        // Başka bir öğe ekle
        ListViewItem item2 = new ListViewItem("Mouse");
        item2.SubItems.Add("50 TL");
        item2.SubItems.Add("200 Adet");
        this.listView1.Items.Add(item2);

        // Kısa yolla öğe ekleme
        string[] row3 = { "Klavye", "150 TL", "100 Adet" };
        ListViewItem item3 = new ListViewItem(row3);
        this.listView1.Items.Add(item3);
    }
}
3. Farklı Görünümler (View Özelliği)

ListView, verileri farklı şekillerde görüntüleyebilir. Görünümü değiştirmek için View özelliğini kullanırız.

  • View.LargeIcon: Her öğeyi büyük bir ikon ve metinle görüntüler.
  • View.SmallIcon: Her öğeyi küçük bir ikon ve metinle görüntüler.
  • View.List: Öğeleri tek bir sütunda, küçük ikonlar ve metinle liste halinde görüntüler.
  • View.Tile: Her öğeyi büyük bir kutu içinde, ikon ve birden fazla alt öğe metniyle görüntüler (daha zengin bir görünüm).
using System.Windows.Forms;
using System.Drawing; // ImageList için

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // Tasarımcıda bir ListView (listView1), bir LargeImageList (largeImageList1)
        // ve bir SmallImageList (smallImageList1) eklenmiş olduğunu varsayalım.
        // ImageList'lere ikonlar eklemiş olalım (örneğin, dosya ikonları).

        // ImageList'leri ListView'e bağla
        this.listView1.LargeImageList = this.largeImageList1;
        this.listView1.SmallImageList = this.smallImageList1;

        // Örnek öğeler ekleyelim (ikon indeksleri ile)
        ListViewItem fileItem = new ListViewItem("Belge.docx", 0); // Metin, ikon indeksi
        fileItem.SubItems.Add("15 KB"); // Alt öğeler (Details görünümü için)
        this.listView1.Items.Add(fileItem);

        ListViewItem folderItem = new ListViewItem("Resimler", 1);
        folderItem.SubItems.Add("2 MB");
        this.listView1.Items.Add(folderItem);

        // Görünümü değiştirme butonları olduğunu varsayalım
        // buttonLargeIcon, buttonSmallIcon, buttonDetails, buttonList, buttonTile
        this.buttonLargeIcon.Click += (s, e) => this.listView1.View = View.LargeIcon;
        this.buttonSmallIcon.Click += (s, e) => this.listView1.View = View.SmallIcon;
        this.buttonDetails.Click += (s, e) => this.listView1.View = View.Details;
        this.buttonList.Click += (s, e) => this.listView1.View = View.List;
        this.buttonTile.Click += (s, e) => this.listView1.View = View.Tile;
    }
}
4. Seçim ve Olaylar

ListView, kullanıcı etkileşimlerine tepki vermek için çeşitli olaylar sunar:

  • SelectedIndexChanged: Seçilen öğe değiştiğinde tetiklenir.
  • ItemActivate: Bir öğe çift tıklandığında veya Enter tuşuna basıldığında tetiklenir.
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // listView1'in öğelerle doldurulduğunu varsayalım

        this.listView1.SelectedIndexChanged += new EventHandler(listView1_SelectedIndexChanged);
        this.listView1.ItemActivate += new EventHandler(listView1_ItemActivate);
    }

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (this.listView1.SelectedItems.Count > 0)
        {
            // Seçilen ilk öğenin metnini göster
            MessageBox.Show("Seçilen Ürün: " + this.listView1.SelectedItems[0].Text);
        }
    }

    private void listView1_ItemActivate(object sender, EventArgs e)
    {
        if (this.listView1.SelectedItems.Count > 0)
        {
            // Çift tıklanan öğenin metnini göster
            MessageBox.Show("Açılan Ürün: " + this.listView1.SelectedItems[0].Text);
            // Burada seçilen öğeyle ilgili bir işlem yapılabilir (örneğin, detay penceresi açma)
        }
    }
}
---

Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile ListView kontrolünün temel özelliklerini, farklı görünümlerini, veri ekleme yöntemlerini ve olaylarını detaylı bir şekilde inceledik. ListView, uygulamalarınızda veri listelerini görsel olarak zengin ve etkileşimli bir şekilde sunmak için güçlü bir araçtır. Dosya gezginleri, ürün listeleri veya herhangi bir tablo benzeri veri sunumu için idealdir. 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 listelerle dolu ve başarılı geliştirme süreçleri dilerim!

0 yorum:

Yorum Gönder