| Sunay | 29 Nisan 2010 19:41 | C# Konu Anlatımı (Ders4) Adres Defteri Yapımı Evet arkadaşlar bu makalemde, güncellenebilir, silinebilir en önemlisi basit yoldan verilerin kayıt edilebilir şekilde bir proje yapicaz.
Öncelikle aşağıdaki gibi formumuzu dizayn edelim. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Global alanda olusturdugumuz Serializable işlemi : Kod:
[Serializable] publicstructKisi { publicstring AdiSoyadi; publicstring Email; publicstring GsmNO; publicDateTime Dogumtarihi; publicbool SevgilisiVarmi; publicoverridestring ToString() { returnthis.AdiSoyadi; } } Yine global alanda void bir method olusturuyoruz. İstediğimiz yerde bu methodu çağırabiliriz. Kod:
publicvoid Temizle() { foreach (Control item in groupBox2.Controls) { if (item isTextBox) { item.Text = ""; } } dateTimePicker1.Value = DateTime.Now; checkBox1.Checked = false; } Form'un Load Kısmındaki Kodlarımız : Kod:
//form aclrken try { //bilgiler nerede FileStream fsAcilacak = newFileStream("C:\\kisiler.IRCForumlari", FileMode.Open); //kim acacak BinaryFormatter acici = newBinaryFormatter(); ArrayList gelenBilgiler =(ArrayList) acici.Deserialize(fsAcilacak); fsAcilacak.Close(); foreach (Kisi item in gelenBilgiler) { listBox1.Items.Add(item); } } catch (Exception) {
} Kaydet Butonun Altında Çalışan Kodlarımız : Kod:
//kisiler kaydedilir.. Kisi eklenecek = newKisi(); eklenecek.AdiSoyadi = txtAd.Text; eklenecek.Dogumtarihi = dateTimePicker1.Value; eklenecek.Email = txtEmail.Text; eklenecek.GsmNO = txtGsm.Text; eklenecek.SevgilisiVarmi = checkBox1.Checked; listBox1.Items.Add(eklenecek); Temizle(); Guncelle Butonun Altında Çalışan Kodlarımız : Kod:
if (listBox1.SelectedIndex != -1) { Kisi guncellenecek =(Kisi) listBox1.SelectedItem; guncellenecek.AdiSoyadi = txtAd.Text; guncellenecek.Dogumtarihi = dateTimePicker1.Value; guncellenecek.Email = txtEmail.Text; guncellenecek.GsmNO = txtGsm.Text; guncellenecek.SevgilisiVarmi = checkBox1.Checked; int cikartilacak = listBox1.SelectedIndex; listBox1.Items.RemoveAt(cikartilacak); listBox1.Items.Insert(cikartilacak, guncellenecek); } Sil Butonun Altında Çalışan Kodlarımız : Kod:
if (listBox1.SelectedIndex != -1) { listBox1.Items.Remove(listBox1.SelectedItem); Temizle(); } Temizle Butonunun Altında Çalışan Kodlarımız : Listbox'un SelectedIndex'inde Çalışan Kodlarımız :
Yani Listbox üzerinde çift tıklayarak girdiğimiz kod alanıdır. Burdaki kodlarımız listbox'ta bir satır seçtiğimiz zaman çalışır. Kod:
try { if (listBox1.SelectedIndex != -1) { //Kisi secilen = listBox1.SelectedItem as Kisi; Kisi secilen = (Kisi)listBox1.SelectedItem; txtAd.Text = secilen.AdiSoyadi; txtEmail.Text = secilen.Email; txtGsm.Text = secilen.GsmNO; dateTimePicker1.Value = secilen.Dogumtarihi; checkBox1.Checked = secilen.SevgilisiVarmi; } } catch (Exception) { MessageBox.Show("Hata ile karsilasildi."); } Son olarak form kapatilirken yapilacak işlemler için aşağıdaki kod bloğunu kullaniyoruz. Form'un kapatılırken kodlarımızı çalıştırmak istersek Form'un event'lerinden FormClosing'e çift tıklayarak iç kısmına gitmemiz gerekir. Kod:
//form kapanrken //buradaki kodlarn tamam calsmadan form asla kapanmaz.
//1- listboxtaki her bir eleman arrayliste aktarlarak tek bir govde haline getirilir.. ArrayList kisiler = newArrayList(); foreach (Kisi item in listBox1.Items) { kisiler.Add(item); } //2- pc uzerinde kaydetme ilemini yapacak olan nesne hazrlanr. //ekleme ilemini BinaryFormatter denilen nesne yapar. uzant degistirilebilir. genellikle dat dir. buyume kapasitesi harddiskinizin boyutu kadardir. try { FileStream fsKaydedilecek = newFileStream("C:\\kisiler.IRCForumlari", FileMode.OpenOrCreate); BinaryFormatter kaydedici = newBinaryFormatter(); kaydedici.Serialize(fsKaydedilecek, kisiler); fsKaydedilecek.Close(); } catch (Exception) {
}
Evet sistemimizin çalışması için gerekli olan kod blokları bunlar. Bişey dikkatinizi çekmiş olması lazım, kaydedilen dosyanın uzantısını IRCForumlari yaptik, isterseniz kendi adınızda isterseniz farkli bir adlada kaydedebilirsiniz :)
Diğer makalelerimde görüşmek üzere, hoşçakalın. |