26 Haziran 2012 Salı

C# ile Panel Kontrolleri

Merhaba sevgili Webkolog okurları! Bugün C# .Net Framework 4 ile Visual Studio 2010 ortamında form tasarımının temel taşlarından olan Panel kontrollerine yakından bakacağız. Özellikle karmaşık arayüzler oluştururken, kontrolleri gruplandırmak, düzenlemek ve yönetmek için panel kontrolleri adeta bir cankurtaran görevi görür. Gelin, bu kullanışlı kontrolleri birlikte inceleyelim ve projelerimizde nasıl daha etkin kullanabileceğimizi keşfedelim. Visual Studio 2010'u açın ve yeni bir Windows Forms Application projesi oluşturarak bu dünyaya adım atalım!

Panel Kontrolleri Ne İşe Yarar?

Panel kontrolleri, diğer kontrolleri bir arada tutmaya yarayan, görünür veya görünmez olabilen dikdörtgen alanlardır. Bu sayede:

  • Kontrolleri Gruplandırma: Birbiriyle ilişkili kontrolleri bir panel içinde toplayarak tasarımınızı daha düzenli hale getirebilirsiniz.
  • Layout Yönetimi: Paneller, içindeki kontrollerin yerleşimini kolaylaştırır. Özellikle farklı ekran çözünürlüklerinde tutarlı bir görünüm elde etmek için önemlidir.
  • Görünürlüğü Yönetme: Bir paneli gizleyerek veya göstererek içindeki tüm kontrollerin görünürlüğünü tek bir yerden kontrol edebilirsiniz.
  • Kaydırma (Scrolling): İçindeki kontroller panelin boyutlarını aştığında kaydırma çubukları ekleyebilirsiniz.

.Net Framework'te sıklıkla kullanılan panel kontrollerinden bazıları şunlardır:

  • Panel: En temel panel kontrolüdür. İçindeki kontrollerin yerleşimini manuel olarak ayarlayabileceğiniz gibi, Dock ve Anchor özellikleri ile de dinamik bir yerleşim sağlayabilirsiniz.
  • GroupBox: Panelle benzer işlevlere sahip olmakla birlikte, etrafında bir başlık (Text özelliği ile belirlenen) bulunan bir çerçeve çizer. İlgili kontrolleri görsel olarak gruplandırmak için idealdir.
  • FlowLayoutPanel: İçindeki kontrolleri belirli bir akış yönünde (yatay veya dikey) otomatik olarak sıralar. Kontrollerin boyutları değiştikçe veya yeni kontroller eklendikçe yerleşim otomatik olarak ayarlanır.
  • TableLayoutPanel: Kontrolleri tablo benzeri bir yapıda, satır ve sütunlara göre düzenlemenizi sağlar. Her hücreye bir veya birden fazla kontrol yerleştirebilir, satır ve sütunların boyutlarını ayarlayabilirsiniz.
  • SplitContainer: Kullanıcı tarafından sürüklenebilir bir ayırıcı (splitter) ile iki ayrı paneli yan yana veya alt alta görüntülemenizi sağlar. Özellikle farklı içerikleri aynı anda göstermek ve kullanıcıya boyutlarını ayarlama imkanı vermek için kullanışlıdır.

Şimdi bu kontrollerin bazı özelliklerine ve kullanım şekillerine örneklerle göz atalım.

1. FlowLayoutPanel ile Dinamik Kontrol Yerleşimi

FlowLayoutPanel, içindeki kontrolleri belirttiğiniz akış yönünde otomatik olarak sıralar. Özellikle dinamik olarak kontrol ekleyip çıkardığınız senaryolarda oldukça işlevseldir. Aşağıdaki örnekte bazı özelliklerini nasıl kullanabileceğimize bakalım:

// FlowLayoutPanel kontrolümüzün form üzerine eklendiğini varsayalım.
flowLayoutPanel1.AutoScroll = true; // İçerik sığmadığında kaydırma çubuklarını aktif eder.
flowLayoutPanel1.WrapContents = false; // Kontrollerin bir sonraki satıra/sütuna geçmesini engeller, tek bir satırda/sütunda sıralar.
flowLayoutPanel1.FlowDirection = FlowDirection.RightToLeft; // Kontrollerin sağdan sola doğru sıralanmasını sağlar.

Bu kod parçacığında, AutoScroll özelliği ile içerik sığmadığında kaydırma imkanı sunuyoruz. WrapContents özelliğini false yaparak kontrollerin tek bir satırda (veya sütunda) sıralanmasını sağlıyoruz. FlowDirection özelliği ile de sıralama yönünü sağdan sola olarak belirliyoruz. Bu özellikler sayesinde, eklediğiniz butonlar veya diğer kontroller otomatik olarak sağdan sola doğru tek bir satırda sıralanacaktır.

2. SplitContainer ile Bölünmüş Arayüzler Oluşturma

SplitContainer, arayüzünüzü iki ayrı bölmeye ayırmanızı ve bu bölmelerin boyutlarını kullanıcıya ayarlatma imkanı vermenizi sağlar.

// SplitContainer kontrolümüzün form üzerine eklendiğini varsayalım.
splitContainer1.FixedPanel = FixedPanel.Panel1; // Sabit boyutlu olacak paneli belirtir (Panel1 veya Panel2).
splitContainer1.IsSplitterFixed = true; // Ayırıcının hareket ettirilmesini engeller.
int currentSplitterDistance = splitContainer1.SplitterDistance; // Ayırıcının mevcut konumunu alır.
int splitterIncrementValue = splitContainer1.SplitterIncrement; // Ayırıcının her hareketinde kaç piksel ilerleyeceğini belirtir.
int splitterLineWidth = splitContainer1.SplitterWidth; // Ayırıcının kalınlığını alır veya ayarlar.

Bu kodda, FixedPanel özelliği ile hangi panelin sabit boyutlu olacağını belirleyebiliriz. IsSplitterFixed özelliğini true yaparak ayırıcının hareket etmesini engelleyebiliriz. SplitterDistance özelliği ayırıcının konumunu piksel cinsinden ifade ederken, SplitterIncrement kullanıcının ayırıcıyı hareket ettirirken her adımda kaç piksel ilerleyeceğini kontrol etmenizi sağlar. SplitterWidth ise ayırıcının kalınlığını belirler.

3. TableLayoutPanel ile Tablo Tabanlı Düzenleme

TableLayoutPanel, kontrolleri satır ve sütunlar halinde düzenlemek için güçlü bir araçtır. Özellikle form üzerindeki kontrollerin belirli bir düzende ve orantılı bir şekilde yerleşmesini istediğinizde idealdir.

// TableLayoutPanel kontrolümüzün form üzerine eklendiğini varsayalım.
 
// Bir kontrolü belirli bir satır ve sütuna yerleştirme ve hücreleri birleştirme:
tableLayoutPanel1.SetColumnSpan(button1, 2); // button1'in 2 sütun genişliğinde olmasını sağlar.
tableLayoutPanel1.SetRowSpan(button1, 2); // button1'in 2 satır yüksekliğinde olmasını sağlar.
tableLayoutPanel1.SetColumn(button1, 1); // button1'i 1. sütuna yerleştirir (indeks 0'dan başlar).
tableLayoutPanel1.SetRow(button1, 1); // button1'i 1. satıra yerleştirir (indeks 0'dan başlar).
tableLayoutPanel1.Controls.Add(button1, 0, 0); // button1'i 0. satır ve 0. sütuna ekler.
 
// Tablo yapısını ve stilini düzenleme:
int columnCount = tableLayoutPanel1.ColumnCount; // Sütun sayısını alır.
TableLayoutPanelCellBorderStyle borderStyle = tableLayoutPanel1.CellBorderStyle; // Hücre kenarlık stilini alır veya ayarlar.
 
tableLayoutPanel1.ColumnStyles.Clear(); // Mevcut sütun stillerini temizler.
tableLayoutPanel1.RowStyles.Clear(); // Mevcut satır stillerini temizler.
 
tableLayoutPanel1.ColumnCount = 38; // Sütun sayısını 38 olarak ayarlar.
tableLayoutPanel1.RowCount = 13; // Satır sayısını 13 olarak ayarlar.
 
// Belirli bir boyutta sütun ekleme:
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 40)); // İlk sütunu 40 piksel genişliğinde yapar.
 
// Otomatik boyutlanan satır ekleme:
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize)); // İlk satırın içeriğine göre otomatik boyutlanmasını sağlar.
 
// Diğer sütunları orantılı olarak boyutlandırma:
for (int i = 1; i < 38; i++)
{
    tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 2.70f)); // Diğer sütunları %2.70 oranında paylaştırır.
}
 
// Diğer satırları orantılı olarak boyutlandırma:
for (int i = 1; i < 13; i++)
{
    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 8.33f)); // Diğer satırları %8.33 oranında paylaştırır.
}
 
// Paneli formun tamamına yaslama ve kenar boşluklarını sıfırlama:
tableLayoutPanel1.Dock = DockStyle.Fill;
tableLayoutPanel1.Margin = new Padding(0);
 Bu kapsamlı örnekte, TableLayoutPanel'in birçok özelliğini nasıl kullanabileceğimizi görüyoruz. Kontrolleri belirli hücrelere yerleştirmek, hücreleri birleştirmek, sütun ve satır sayılarını ayarlamak, sütun ve satırların boyutlandırma tiplerini (Absolute, AutoSize, Percent) belirlemek ve paneli formun tamamına yaslamak gibi birçok işlemi bu özellikler sayesinde kolayca gerçekleştirebilirsiniz.

Sevgili Webkolog okurları, C# .Net Framework 4 ile Visual Studio 2010 ortamında Panel kontrollerinin temel kullanımını ve bazı önemli özelliklerini bu şekilde incelemiş olduk. Unutmayın, bu kontroller form tasarımlarınızı daha düzenli, yönetilebilir ve kullanıcı dostu hale getirmenin anahtarlarından biridir. Projelerinizde bu bilgileri kullanarak çok daha etkileyici arayüzler oluşturabilirsiniz.

Webkolog'u takipte kalın!

Hepinize bol kodlu günler dilerim!

0 yorum:

Yorum Gönder