Merhabalar,
Bugün birlikte sabit olarak Türkçeleştirebileceğimiz
enum’lar üzerinde duracağız. Öncelikle Enum’ları niçin kullanırız biraz bunun
üzerinde duralım.
Arkadaşlar insanlara
sabit seçeneklerin sunulması gerektiği anlarda enum tipine ihtiyaç duyarız.
Nasıl mı, örneğin Cinsiyet bilgisi sabittir Erkek ve Kadın olmak üzere. Bir örnek
daha verelim, bu da departmanlar olsun, bir şirketteki departmanlar (insan
kaynakları, bilgi işlem, pazarlama vs) uzun yıllar boyunca değişmesi zor olan
sabitlerdir esasında. Siz bu tarz verilerle karşılaşıp bunlar için veritabanınızda
tablo oluşturmak yerine Enum’ları tercih edebilirsiniz. Bu sizi database
üzerindeki bir tablonun yükünden kuratracak ve performans açısından daha
verimli sonuçlar elde etmenizi sağlayacaktır.
Bir enumun class
seviyesinde tanımlanabileceğini hatırlatıp bir senaryo üzerinden yazının konusu
olan enumlarla nasıl çalışılır sorusunun cevabını aramaya başlayalım.
Senaryomuz şu olsun;
X Üniversitesi Mezunlar
Derneği’nin sahibi olduğumuzu düşünelim. Ve deneğe kayıt edeceğimiz üyelerimizin
Ad, Soyad, Mail adresi ve öğrenim durumu bilgilerine ihtiyaç duyduğumuzu
düşünelim. Şimdi gelin bunun için bir form hazırlayalım.
Bu formda bir
tabControl kullanıyoruz ve 1. TabPage’de yukarıda da gördüğünüz gibi üye kaydetme
işlemini gerçekleştiriyoruz. 2. TabPage ise kayıt ettiğimiz üyelerin
gösteriminin yapılacağı sayfa olacaktır.
Üye ekleme işleminin
yapılacağı tabPage’de öğrenim durumunun karşısında bir comboBox olduğu
dikkatinizi çekmiştir. Bu comboBox, hazırlayacağımız enum için kullanacağımız kontrol
olacaktır. Şimdi OOP’den de yardım alarak class ve enum’umumuzu oluşturalım;
public enum OgrenimDurumu
{
Lise,
Universite,
Yuksek_Lisans,
Doktora
}
public class Uye
{
public string AdSoyad { get;
set; }
public OgrenimDurumu Mezuniyet { get;
set; }
public string MailAdres { get;
set; }
public override string
ToString()
{
return
this.AdSoyad;
}
}
Enum ve class’ımız
hazır olduğuna göre üye kayıtları gerçekleştirmeye başlayabiliriz. Yalnız
unutmamamız gereken bir nokta var ki o da Form’un load’ında yani form
yüklenirken combobox’ımızı OgrenimDurumu enumumuz ile doldurmaktır. Peki bunu
nasıl yaparız? Bu sorunun cevabını aşağıdaki kod bloğunda bulabiliriz.
private
void Form1_Load(object
sender, EventArgs e)
{
//# Enum
tipi ile Combobox'ın içini nasıl doldururum?
cbOgrenimDurumu.DataSource = Enum.GetValues(typeof(OgrenimDurumu));
}
Bu kodun türkçesi
şudur; öğrenim durumu tipinin değerlerini comboBox’ın veri kaynağı olarak ata.
Combobox’ın veri kaynağını da belirledikten sonra kayıt yapmaya hazırız. Peki
kaydet butonuna bastığımızda nasıl kayıt ekleyeceğiz? Arkadaşlar burada bir
veritabanı kullanmayacağımız için kayıtları listbox’a doldurmamız yeterli
olacaktır. Bunu sağlayacak kod bloğumuz ise aşağıdaki gibi olacaktır;
private
void btnEkle_Click(object
sender, EventArgs e)
{
Uye
eklenecekUye = new Uye
{ AdSoyad = txtAdSoyad.Text, Mezuniyet = (OgrenimDurumu)cbOgrenimDurumu.SelectedItem,
MailAdres = txtMailAdres.Text };
lstboxUyeler.Items.Add(eklenecekUye);
}
Yukarıdaki kod
bloğunda önemli olan kendisi de bir enum tipi olan Öğrenim Durumu property’sine
atamayı nasıl gerçekleştireceğimizdi onu da combobox’ın seçili elemanını
OgrenimDurumu enumuna çevirerek yaptık -> (OgrenimDurumu)cbOgrenimDurumu.SelectedItem.
Şimdi kaydettiğimiz
bu üyeyi göstermeye geldi sıra. Dikkat edecek olursanız biz oluşturduğumuz
üyeleri listbox’a ekliyoruz. Şimdi bu listbox’tan bir elemanın seçilmesi ile
bilgileri pekala alıp sunabiliriz. Örnek olarak aşağıdaki kodu inceleyiniz;
private
void lstboxUyeler_SelectedIndexChanged(object sender, EventArgs
e)
{
Uye
seciliUye = lstboxUyeler.SelectedItem as Uye;
lblAdSoyad.Text =
seciliUye.AdSoyad;
lblMezuniyet.Text =
seciliUye.Mezuniyet.ToString();
lblMail.Text = seciliUye.MailAdres;
}
Bu kod bloğunda
dikkate etmeniz gereken nokta enum tipi olan Mezuniyet’i ToString() metodu ile
label’da göstermemizdir.
NOT : Enumların sayısal değerine ulaşmak için
onları int ile convert etmeniz gerekmektedir. Örnek;
lblMezuniyet.Text = ((int)seciliUye.Mezuniyet).ToString();
Bir sonraki yazımızda görüşmek dileğiyle,
hoşçakalın..
0 yorum:
Yorum Gönder