Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# .NET Framework 4 ile Windows Forms uygulamalarında esnek ve yeniden boyutlandırılabilir arayüzler oluşturmak için kullandığımız SplitContainer
kontrolünü yakından inceleyeceğiz. SplitContainer
, formunuzu veya bir konteyner kontrolünü iki bölmeye ayırarak, kullanıcıların bu bölmelerin boyutlarını fare ile değiştirmesine olanak tanır. Bu, özellikle dosya gezginleri, e-posta istemcileri veya IDE'ler gibi çok bölmeli uygulamalar için idealdir. Gelin, SplitContainer
'in temel özelliklerini ve nasıl kullanıldığını birlikte keşfedelim.
SplitContainer
Kontrolü Nedir?
SplitContainer
kontrolü, bir alanı iki yeniden boyutlandırılabilir bölmeye ayıran bir konteyner kontrolüdür. Bu bölmeler, dikey veya yatay olarak konumlandırılabilir ve aralarında bir bölücü (splitter) bulunur. Kullanıcılar, bölücüyü sürükleyerek bölmelerin boyutlarını dinamik olarak değiştirebilirler. Her bir bölme (Panel1
ve Panel2
), kendi içinde diğer kontrolleri barındırabilen bir Panel
kontrolü gibi davranır.
SplitContainer
Kontrolünün Temel Özellikleri
SplitContainer
kontrolü, bölmelerin davranışını ve görünümünü özelleştirmek için birçok önemli özelliğe sahiptir:
Panel1
: Bölücünün ilk tarafındaki bölmeyi temsil edenPanel
nesnesi.Panel2
: Bölücünün ikinci tarafındaki bölmeyi temsil edenPanel
nesnesi.Orientation
: Bölücünün yönünü belirler.Horizontal
(yatay, bölmeler üst üste) veyaVertical
(dikey, bölmeler yan yana) değerlerini alabilir.SplitterDistance
: BölücününPanel1
'in başlangıcından olan uzaklığını piksel cinsinden belirler. Bu, bölmelerin başlangıç boyutlarını ayarlar.SplitterWidth
: Bölücünün genişliğini (dikey ise) veya yüksekliğini (yatay ise) piksel cinsinden belirler.IsSplitterFixed
: Eğertrue
olarak ayarlanırsa, kullanıcının bölücüyü fare ile sürükleyerek boyutları değiştirmesi engellenir.FixedPanel
: Yeniden boyutlandırma sırasında hangi panelin sabit boyutlu kalacağını belirler (Panel1
,Panel2
veyaNone
).Panel1MinSize
:Panel1
'in alabileceği minimum boyutu piksel cinsinden belirler.Panel2MinSize
:Panel2
'nin alabileceği minimum boyutu piksel cinsinden belirler.BackColor
: Kontrolün arka plan rengi.BorderStyle
: Bölücü çevresine bir kenarlık ekler (None
,FixedSingle
,Fixed3D
).
SplitContainer
Kullanım Senaryoları
1. Dikey Bölmeler Oluşturma (Varsayılan)
En yaygın kullanım, formu dikey olarak ikiye bölmektir. Sol panelde bir liste, sağ panelde detaylar gösterebilirsiniz.
using System.Windows.Forms;
using System.Drawing; // Point, Size için
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Tasarımcıda bir SplitContainer (splitContainer1) eklenmiş olduğunu varsayalım
// ve Dock özelliği Fill olarak ayarlanmış olsun.
this.splitContainer1.Orientation = Orientation.Vertical; // Varsayılan olarak dikey
this.splitContainer1.SplitterDistance = 200; // Sol panelin genişliği 200 piksel olsun
this.splitContainer1.FixedPanel = FixedPanel.Panel1; // Sol panel sabit kalsın
// Panel1'e bir ListView ekleyelim
ListView listView1 = new ListView();
listView1.Dock = DockStyle.Fill;
listView1.View = View.Details;
listView1.Columns.Add("Öğe Adı", 100);
listView1.Items.Add("Dosya 1");
listView1.Items.Add("Dosya 2");
this.splitContainer1.Panel1.Controls.Add(listView1);
// Panel2'ye bir TextBox ekleyelim
TextBox textBoxDetails = new TextBox();
textBoxDetails.Dock = DockStyle.Fill;
textBoxDetails.Multiline = true;
textBoxDetails.Text = "Seçilen dosyanın detayları burada görünecek.";
this.splitContainer1.Panel2.Controls.Add(textBoxDetails);
}
}
2. Yatay Bölmeler Oluşturma
Formu yatay olarak ikiye bölmek için Orientation
özelliğini Horizontal
olarak ayarlarız. Bu durumda, üst panel ve alt panel oluşur.
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Tasarımcıda bir SplitContainer (splitContainer1) eklenmiş olduğunu varsayalım
this.splitContainer1.Orientation = Orientation.Horizontal; // Yatay bölmeler
this.splitContainer1.SplitterDistance = 150; // Üst panelin yüksekliği 150 piksel olsun
// Panel1'e bir Label ekleyelim
Label labelUst = new Label();
labelUst.Text = "Üst Bölme İçeriği";
labelUst.Dock = DockStyle.Fill;
labelUst.TextAlign = ContentAlignment.MiddleCenter;
this.splitContainer1.Panel1.Controls.Add(labelUst);
// Panel2'ye bir Button ekleyelim
Button buttonAlt = new Button();
buttonAlt.Text = "Alt Bölme Butonu";
buttonAlt.Dock = DockStyle.Fill;
this.splitContainer1.Panel2.Controls.Add(buttonAlt);
}
}
3. İç İçe SplitContainer
Kullanımı
Daha karmaşık arayüzler oluşturmak için SplitContainer
kontrollerini iç içe yerleştirebiliriz. Örneğin, dikey bir bölmenin panellerinden birine yatay bir SplitContainer
ekleyebiliriz.
using System.Windows.Forms;
using System.Drawing;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Tasarımcıda bir ana SplitContainer (splitContainerMain) eklenmiş olduğunu varsayalım
// ve Dock özelliği Fill olarak ayarlanmış olsun.
this.splitContainerMain.Orientation = Orientation.Vertical;
this.splitContainerMain.SplitterDistance = 200;
// Sol panele (Panel1) bir TreeView ekleyelim
TreeView treeView = new TreeView();
treeView.Dock = DockStyle.Fill;
treeView.Nodes.Add("Kategori 1");
treeView.Nodes.Add("Kategori 2");
this.splitContainerMain.Panel1.Controls.Add(treeView);
// Sağ panele (Panel2) yeni bir SplitContainer (splitContainerNested) ekleyelim
SplitContainer splitContainerNested = new SplitContainer();
splitContainerNested.Dock = DockStyle.Fill;
splitContainerNested.Orientation = Orientation.Horizontal; // Yatay bölmeler
splitContainerNested.SplitterDistance = 100; // Üst panel yüksekliği
// İç içe SplitContainer'ın üst paneline (Panel1) bir DataGridView ekleyelim
DataGridView dataGridView = new DataGridView();
dataGridView.Dock = DockStyle.Fill;
// Örnek veri ekleme (gerçek uygulamada veritabanından gelir)
dataGridView.Columns.Add("Col1", "Sütun 1");
dataGridView.Columns.Add("Col2", "Sütun 2");
dataGridView.Rows.Add("Veri A", "Değer 1");
dataGridView.Rows.Add("Veri B", "Değer 2");
splitContainerNested.Panel1.Controls.Add(dataGridView);
// İç içe SplitContainer'ın alt paneline (Panel2) bir PropertyGrid veya TextBox ekleyelim
TextBox propertiesTextBox = new TextBox();
propertiesTextBox.Dock = DockStyle.Fill;
propertiesTextBox.Multiline = true;
propertiesTextBox.Text = "Seçilen öğenin özellikleri burada gösterilecek.";
splitContainerNested.Panel2.Controls.Add(propertiesTextBox);
// Ana SplitContainer'ın sağ paneline iç içe SplitContainer'ı ekle
this.splitContainerMain.Panel2.Controls.Add(splitContainerNested);
}
}
SplitContainer
Olayları
SplitContainer
kontrolü, bölücü ile ilgili kullanıcı etkileşimlerine tepki vermek için çeşitli olaylar sunar:
SplitterMoving
: Kullanıcı bölücüyü sürüklerken sürekli olarak tetiklenir.SplitterMoved
: Kullanıcı bölücüyü sürüklemeyi bitirdiğinde tetiklenir. Bu olay, bölmelerin yeni boyutlarını işlemek için kullanışlıdır.SplitterResizing
: Bölücü yeniden boyutlandırılırken tetiklenir.Panel1_Resize
,Panel2_Resize
: Her bir panelin boyutu değiştiğinde tetiklenir.
Örnek: SplitterMoved
Olayı
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// splitContainer1'in tanımlandığını varsayalım
this.splitContainer1.SplitterMoved += new SplitterEventHandler(splitContainer1_SplitterMoved);
}
private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e)
{
// Bölücü hareket ettirildiğinde yeni konumunu göster
MessageBox.Show("Bölücü yeni konuma taşındı. Panel1 Genişliği: " + this.splitContainer1.Panel1.Width.ToString() + "px");
// Veya Panel1'in yeni yüksekliği (eğer Orientation Horizontal ise)
// MessageBox.Show("Bölücü yeni konuma taşındı. Panel1 Yüksekliği: " + this.splitContainer1.Panel1.Height.ToString() + "px");
}
}
---
Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile SplitContainer
kontrolünün temel özelliklerini, kullanım senaryolarını ve olaylarını detaylı bir şekilde inceledik. SplitContainer
, uygulamalarınızda esnek, yeniden boyutlandırılabilir ve çok bölmeli arayüzler oluşturmak için güçlü bir araçtır. Özellikle veri yoğun uygulamalarda veya kullanıcıların farklı bilgi alanlarını aynı anda görmesi gereken durumlarda kullanıcı deneyimini önemli ölçüde artırır. 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 esnek ve başarılı geliştirme süreçleri dilerim!
0 yorum:
Yorum Gönder