C# Windows Forms'ta Sık Kullanılan Kontroller
Visual Studio'da C# ile Windows Forms uygulaması geliştirirken kullanıcı arayüzünü oluşturmak için çeşitli kontroller kullanılır. Bu kontroller; kullanıcıdan bilgi almak, bilgi göstermek, seçim yaptırmak ve uygulamanın işlemlerini yönetmek için kullanılır.
Bu makalede Windows Forms uygulamalarında sık kullanılan Label, TextBox, Button, CheckBox, RadioButton, ComboBox, ListBox, PictureBox, GroupBox, Panel, DateTimePicker ve DataGridView kontrolleri açıklanmaktadır.
1. Windows Forms Kontrolleri Nedir?
Windows Forms kontrolleri, bir form üzerinde bulunan ve kullanıcıyla etkileşim kurmayı sağlayan arayüz elemanlarıdır. Örneğin kullanıcıdan ad almak için TextBox, ekranda açıklama göstermek için Label, bir işlemi başlatmak için Button kullanılabilir.
Kontroller, Visual Studio'daki Araç Kutusu (Toolbox) bölümünden forma eklenir. Her kontrolün görünümünü ve davranışını değiştiren özellikleri, kullanıcının yaptığı işlemlere tepki veren olayları bulunur.
Örnek: Bir kayıt formunda kullanıcının adını yazması için TextBox, “Kaydet” işlemi için Button ve alanların adını belirtmek için Label kullanılabilir.
2. Visual Studio'da Forma Kontrol Ekleme
Forma kontrol eklemek için aşağıdaki adımları izleyebilirsiniz:
-
Windows Forms projesini açın ve form tasarım ekranına geçin.
-
Araç Kutusu (Toolbox) bölümünü açın.
-
Eklemek istediğiniz kontrolü bulun.
-
Kontrolü form üzerine sürükleyip bırakın.
-
Kontrol seçiliyken Özellikler (Properties) penceresinden adını, ekranda görünen yazısını ve diğer özelliklerini düzenleyin.
Kontrolün forma eklenmesinden sonra özellikleri tasarım ekranında değiştirilebilir. Kontrole çift tıklayarak çoğu zaman o kontrolün varsayılan olayı için kod oluşturulabilir. Örneğin bir Button'a çift tıklandığında genellikle Click olayı için metot açılır.
3. Kontrollerde Sık Kullanılan Özellikler
Kontrollerin türüne göre farklı özellikleri bulunur. Birçok kontrolde ortak olarak kullanılan özellikler şunlardır:
-
Name: Kontrolün C# kodu içinde kullanılan adını belirler. Örneğin txtAd veya btnKaydet.
-
Text: Kontrol üzerinde kullanıcıya gösterilen yazıyı belirler. Örneğin Button üzerinde “Kaydet” yazması için Text özelliği kullanılır.
-
Enabled: Kontrolün kullanılabilir olup olmadığını belirler. false yapılırsa kullanıcı kontrolü kullanamaz.
-
Visible: Kontrolün formda görünüp görünmeyeceğini belirler.
-
Font: Yazı tipini, boyutunu ve biçimini ayarlar.
-
ForeColor: Yazı rengini belirler.
-
BackColor: Arka plan rengini belirler.
-
Size: Kontrolün genişliğini ve yüksekliğini belirler.
-
Location: Kontrolün form üzerindeki konumunu belirler.
-
TabIndex: Klavyedeki Tab tuşuyla kontroller arasında gezinme sırasını belirler.
Name özelliği kod içinde kontrolü bulmak ve kullanmak için kullanılır. Text özelliği ise kontrol üzerinde kullanıcıya gösterilen metni içerir. Örneğin Name değeri btnKaydet, Text değeri Kaydet olabilir.
4. Label Kontrolü
Label, form üzerinde açıklama, başlık veya sonuç metni göstermek için kullanılır. Kullanıcı genellikle Label üzerindeki yazıyı doğrudan değiştiremez.
Label'ın en sık kullanılan özellikleri şunlardır:
-
Name: Kontrolün kod içindeki adı.
-
Text: Label üzerinde gösterilecek yazı.
-
AutoSize: Label'ın boyutunun içindeki yazıya göre ayarlanmasını sağlar.
-
TextAlign: Yazının Label içindeki hizasını belirler.
Bir Label'ın yazısı kod üzerinden değiştirilebilir:
lblSonuc.Text = "İşlem tamamlandı.";
Burada lblSonuc, Label kontrolünün Name değeridir. Label üzerinde gösterilecek metin ise Text özelliğine atanır.
5. TextBox Kontrolü
TextBox, kullanıcının klavyeyle metin girmesini sağlayan kontroldür. Ad, soyad, e-posta ve açıklama gibi bilgileri almak için kullanılabilir.
TextBox kontrolünün sık kullanılan özellikleri şunlardır:
-
Text: Kullanıcının yazdığı metni içerir.
-
Multiline: Birden fazla satırda metin girilmesini sağlar.
-
MaxLength: Girilebilecek en fazla karakter sayısını belirler.
-
PasswordChar: Parola yazarken karakterlerin gizlenmesini sağlar.
-
ReadOnly: Metnin kullanıcı tarafından değiştirilmesini engeller.
-
ScrollBars: Çok satırlı metin alanında kaydırma çubuklarının görünmesini sağlar.
TextBox içindeki metne C# kodundan erişmek için Text özelliği kullanılır:
string ad = txtAd.Text;
Örneğin TextBox'ın Name değeri txtAd ise, kullanıcının girdiği ad txtAd.Text ifadesiyle alınabilir.
6. Button Kontrolü
Button, kullanıcının tıklayarak bir işlem başlatmasını sağlar. Formu kaydetme, temizleme, hesaplama veya başka bir ekrana geçme gibi işlemler Button üzerinden yapılabilir.
Button kontrolünde sık kullanılan özellikler şunlardır:
-
Text: Butonun üzerinde görünen yazıyı belirler.
-
Enabled: Butonun tıklanabilir olup olmadığını belirler.
-
Image: Buton üzerinde resim gösterilmesini sağlar.
-
BackColor: Butonun arka plan rengini belirler.
Bir Button'ın en sık kullanılan olayı Click olayıdır. Butona tıklandığında çalışacak kod bu olayın içine yazılır:
private void btnMerhaba_Click(object sender, EventArgs e)
{
lblSonuc.Text = "Merhaba " + txtAd.Text;
}
Bu örnekte kullanıcı btnMerhaba adlı butona tıkladığında TextBox'a yazdığı ad alınır ve Label üzerinde gösterilir.
7. CheckBox Kontrolü
CheckBox, kullanıcının bir seçeneği işaretlemesini veya işaretini kaldırmasını sağlar. Birbirinden bağımsız birden fazla seçenek aynı anda seçilebilir.
Örneğin kullanıcıdan “Kuralları kabul ediyorum” onayı almak veya bir özellik için “Aktif” seçeneği sunmak amacıyla CheckBox kullanılabilir.
CheckBox'ın en önemli özelliği Checked özelliğidir. Bu özellik, kontrolün işaretli olup olmadığını belirtir:
if (chkKurallariKabul.Checked)
{
lblSonuc.Text = "Kurallar kabul edildi.";
}
else
{
lblSonuc.Text = "Lütfen kuralları kabul edin.";
}
CheckBox üzerinde kullanıcıya gösterilen yazıyı Text özelliği belirler. Örneğin Text değeri Kuralları kabul ediyorum olabilir.
8. RadioButton Kontrolü
RadioButton, bir seçenek grubu içinden genellikle yalnızca bir seçeneğin işaretlenmesini sağlar. Örneğin kullanıcıdan ödeme türü olarak “Nakit” veya “Kredi Kartı” seçeneklerinden birini seçmesi istenebilir.
RadioButton'ın seçili olup olmadığını Checked özelliğiyle kontrol edebiliriz:
if (rdoOnline.Checked)
{
lblSonuc.Text = "Online seçildi.";
}
else if (rdoYuzYuze.Checked)
{
lblSonuc.Text = "Yüz yüze seçildi.";
}
Aynı gruptaki RadioButton'lardan birini seçtiğinizde diğerlerinin seçimi kaldırılır. Bir formda birbirinden bağımsız seçim grupları oluşturmak için RadioButton'ları farklı GroupBox veya Panel kontrollerinin içine yerleştirebilirsiniz.
CheckBox ile farkı: CheckBox kontrollerinde birden fazla seçenek aynı anda işaretlenebilir. Aynı gruptaki RadioButton kontrollerinde ise genellikle yalnızca bir seçenek işaretlenir.
9. ComboBox Kontrolü
ComboBox, kullanıcıya açılır bir seçenek listesi sunar. Şehir, sınıf, bölüm veya kategori seçimi gibi durumlarda kullanılabilir. ComboBox görünür alanında genellikle tek bir seçenek gösterir.
ComboBox'ın sık kullanılan özellikleri şunlardır:
-
Items: Açılır listede gösterilecek seçenekleri içerir.
-
SelectedIndex: Seçili öğenin listedeki sıra numarasını belirtir.
-
SelectedItem: Kullanıcının seçtiği öğeyi verir.
-
DropDownStyle: Kullanıcının listeden seçim yapma veya alana yazı yazma davranışını belirler.
Seçenekler, tasarım ekranındaki Items özelliğinden eklenebileceği gibi kodla da eklenebilir:
cmbSehir.Items.Add("Ankara");
cmbSehir.Items.Add("İzmir");
cmbSehir.Items.Add("İstanbul");
Kullanıcının seçtiği öğeyi almak için SelectedItem kullanılabilir:
if (cmbSehir.SelectedItem != null)
{
lblSonuc.Text = cmbSehir.SelectedItem.ToString();
}
SelectedItem boş olabileceği için seçim yapılmadan önce kontrol edilmesi, olası hataları önlemeye yardımcı olur.
10. ListBox Kontrolü
ListBox, birden fazla öğeyi liste halinde göstermek için kullanılır. Kullanıcı, ayarlanan seçme biçimine bağlı olarak listeden bir veya birden fazla öğe seçebilir.
ListBox'ın sık kullanılan özellikleri şunlardır:
-
Items: Listede gösterilecek öğeleri içerir.
-
SelectedItem: Seçili öğeyi verir.
-
SelectedIndex: Seçili öğenin listedeki sırasını belirtir.
-
SelectionMode: Kullanıcının tek bir öğe mi, yoksa birden fazla öğe mi seçebileceğini belirler.
ListBox'a kodla öğe eklemek için Items.Add metodu kullanılabilir:
lstDersler.Items.Add("C# Programlama");
lstDersler.Items.Add("Web Tasarımı");
lstDersler.Items.Add("Veritabanı");
Seçili öğeyi kontrol etmek için:
if (lstDersler.SelectedItem != null)
{
lblSonuc.Text = lstDersler.SelectedItem.ToString();
}
11. PictureBox Kontrolü
PictureBox, form üzerinde resim göstermek için kullanılır. Profil fotoğrafı, ürün görseli veya uygulama logosu gibi görseller PictureBox içinde gösterilebilir.
En sık kullanılan özelliklerinden biri SizeMode özelliğidir. Bu özellik resmin PictureBox içine nasıl yerleştirileceğini belirler:
-
Normal: Resmi özgün boyutunda gösterir.
-
StretchImage: Resmi PictureBox'ın boyutlarına göre esnetir.
-
Zoom: Resmin en-boy oranını koruyarak kontrolün içine sığmasını sağlar.
-
CenterImage: Resmi kontrolün ortasında gösterir.
PictureBox'a resim eklemek için kontrolün Image özelliği kullanılabilir. Resim, Özellikler penceresinden seçilebilir veya uygulama içinde kodla yüklenebilir.
12. GroupBox ve Panel Kontrolleri
GroupBox ve Panel, form üzerindeki kontrolleri bir arada tutmaya ve düzenlemeye yardımcı olur. İçlerine Button, TextBox, RadioButton ve benzeri kontroller yerleştirilebilir.
GroupBox, çevresinde bir çerçeve ve başlık göstererek kontrolleri görsel olarak gruplar. Örneğin şehir seçenekleri “Şehir Seçimi” başlıklı bir GroupBox içine yerleştirilebilir.
Panel ise kontrolleri bir bölüm içinde toplamak için kullanılır. Panel'in başlık özelliği yoktur; görünümü ve kaydırma gibi özellikleri ihtiyaca göre ayarlanabilir.
Bu kontroller, özellikle RadioButton seçeneklerini birbirinden bağımsız gruplara ayırmak için kullanışlıdır. Farklı GroupBox'lar içindeki RadioButton'lar ayrı gruplar gibi davranır.
13. DateTimePicker Kontrolü
DateTimePicker, kullanıcının tarih veya saat seçmesini sağlar. Doğum tarihi, randevu tarihi ya da işlem tarihi almak için kullanılabilir.
Kullanıcının seçtiği tarih Value özelliğinden alınır:
DateTime secilenTarih = dtpTarih.Value;
lblSonuc.Text = secilenTarih.ToShortDateString();
Tarihi farklı bir biçimde göstermek için ToString metoduna biçim bilgisi verilebilir:
lblSonuc.Text = dtpTarih.Value.ToString("dd.MM.yyyy");
Bu örnekte tarih gün.ay.yıl biçiminde gösterilir.
14. DataGridView Kontrolü
DataGridView, verileri satır ve sütunlardan oluşan bir tablo halinde göstermek için kullanılır. Öğrenci listeleri, ürün kayıtları veya veritabanı sonuçları bu kontrol üzerinde görüntülenebilir.
DataGridView üzerinde sütunlar elle oluşturulabilir veya veriler bir veri kaynağına bağlanarak gösterilebilir. Sık kullanılan özellikleri arasında DataSource, ReadOnly, AllowUserToAddRows ve AutoSizeColumnsMode bulunur.
-
DataSource: Gösterilecek verinin kaynağını belirler.
-
ReadOnly: Tablodaki verilerin kullanıcı tarafından değiştirilip değiştirilemeyeceğini belirler.
-
AllowUserToAddRows: Kullanıcının tabloya yeni satır ekleyip ekleyemeyeceğini belirler.
-
AutoSizeColumnsMode: Sütun genişliklerinin nasıl ayarlanacağını belirler.
DataGridView, özellikle çok sayıda kaydı düzenli ve karşılaştırılabilir biçimde göstermek için tercih edilir.
15. Kontrollerde Sık Kullanılan Olaylar
Olaylar, kullanıcının yaptığı bir işlem sonucunda çalıştırılacak kodların yazıldığı bölümlerdir. Windows Forms'ta sık kullanılan olaylar şunlardır:
-
Click: Kullanıcı kontrole tıkladığında çalışır. Button işlemlerinde sık kullanılır.
-
TextChanged: TextBox içindeki metin değiştiğinde çalışır.
-
CheckedChanged: CheckBox veya RadioButton'ın seçimi değiştiğinde çalışır.
-
SelectedIndexChanged: ComboBox veya ListBox'taki seçim değiştiğinde çalışır.
-
Load: Form açılırken çalışır. Başlangıç ayarları ve ilk verileri hazırlamak için kullanılabilir.
Bir olay için kod oluşturmak amacıyla tasarım ekranında ilgili kontrole çift tıklayabilir veya Özellikler penceresindeki olaylar bölümünden uygun olayı seçebilirsiniz.
16. Kontrolleri Birlikte Kullanma Örneği
Aşağıdaki örnekte kullanıcıdan ad bilgisi alınır, bir şehir seçmesi istenir ve “Göster” butonuna tıklandığında bilgiler Label üzerinde gösterilir.
Form tasarımına şu kontrolleri ekleyin:
-
Ad bilgisini almak için Name değeri txtAd olan bir TextBox
-
Şehir seçimi için Name değeri cmbSehir olan bir ComboBox
-
İşlemi başlatmak için Name değeri btnGoster olan bir Button
-
Sonucu göstermek için Name değeri lblSonuc olan bir Label
ComboBox seçeneklerini form açılırken eklemek için Form'un Load olayına aşağıdaki kodu yazabilirsiniz:
private void Form1_Load(object sender, EventArgs e)
{
cmbSehir.Items.Add("Ankara");
cmbSehir.Items.Add("İzmir");
cmbSehir.Items.Add("İstanbul");
}
Ardından Button'ın Click olayına şu kodu ekleyin:
private void btnGoster_Click(object sender, EventArgs e)
{
string ad = txtAd.Text.Trim();
if (ad == "")
{
lblSonuc.Text = "Lütfen adınızı yazın.";
return;
}
if (cmbSehir.SelectedItem == null)
{
lblSonuc.Text = "Lütfen bir şehir seçin.";
return;
}
string sehir = cmbSehir.SelectedItem.ToString();
lblSonuc.Text = "Merhaba " + ad + ". Seçtiğiniz şehir: " + sehir;
}
Örneğin çalışma mantığı
Form açıldığında Form1_Load olayı çalışır ve şehir adları ComboBox'a eklenir. Kullanıcı adını yazar, listeden bir şehir seçer ve “Göster” butonuna tıklar.
Butonun Click olayı önce ad alanının boş olup olmadığını kontrol eder. Ad yazılmamışsa kullanıcıya uyarı gösterir ve return komutuyla metottan çıkar. Ad yazılmışsa ComboBox'ta seçim yapılıp yapılmadığı kontrol edilir.
Gerekli bilgiler girilmişse ad ve şehir bilgileri alınır, birleştirilir ve Label'ın Text özelliğine aktarılır.
Not: Olay metotlarının çalışması için ilgili olayın tasarım ekranında kontrole bağlanmış olması gerekir. Olayı kontrol seçiliyken Properties penceresindeki yıldırım simgeli bölümden ekleyebilir veya kontrolün tasarım ekranındaki varsayılan olayını oluşturabilirsiniz.
17. Kontrol Adı Verirken Dikkat Edilmesi Gerekenler
Kontrollere anlaşılır adlar vermek, kodun okunmasını ve düzenlenmesini kolaylaştırır. Örneğin textBox1 yerine txtAd, button1 yerine btnKaydet kullanmak kontrolün görevini daha kolay anlamayı sağlar.
Sık kullanılan adlandırma örnekleri şunlardır:
-
txt: TextBox. Örnek: txtAd
-
lbl: Label. Örnek: lblSonuc
-
btn: Button. Örnek: btnKaydet
-
chk: CheckBox. Örnek: chkOnay
-
rdo: RadioButton. Örnek: rdoOnline
-
cmb: ComboBox. Örnek: cmbSehir
-
lst: ListBox. Örnek: lstDersler
-
dtp: DateTimePicker. Örnek: dtpTarih
-
dgv: DataGridView. Örnek: dgvOgrenciler
Bu adlandırma biçimi zorunlu değildir; ancak proje büyüdükçe kontrolleri tanımayı kolaylaştırır.
18. Konunun Özeti
-
Label: Formda açıklama, başlık ve sonuç metni göstermek için kullanılır.
-
TextBox: Kullanıcıdan metin bilgisi almak için kullanılır.
-
Button: Tıklamayla işlem başlatır; en sık kullanılan olayı Click'tir.
-
CheckBox: Birbirinden bağımsız seçeneklerin işaretlenmesini sağlar.
-
RadioButton: Aynı seçenek grubu içinden genellikle tek seçim yapılmasını sağlar.
-
ComboBox: Açılır bir listeden seçim yaptırır.
-
ListBox: Bir veya birden fazla öğeyi liste halinde gösterir.
-
PictureBox: Form üzerinde resim gösterir.
-
GroupBox ve Panel: Kontrolleri gruplamaya ve düzenlemeye yardımcı olur.
-
DateTimePicker: Tarih veya saat seçimi sağlar.
-
DataGridView: Verileri satır ve sütunlardan oluşan tabloda gösterir.
-
Name: Kontrolü kod içinde tanımak için kullanılır. Text ise kullanıcıya gösterilen yazıyı belirler.
Windows Forms uygulamalarında kontrolleri doğru seçerek kullanıcıdan bilgi alabilir, bu bilgileri işleyebilir ve sonuçları ekranda gösterebiliriz. Kontrollerin özelliklerini ve olaylarını tanımak, C# ile masaüstü uygulaması geliştirmeye başlamak için temel bir adımdır.