Bu makalede C# ile Class ve List kullanımını gösteren basit bir uygulama oluşturacağız. Örneğimizde bir hastane randevu sistemi oluşturacağız.
Uygulamamızda veritabanı kullanmayacağımızı belirterek tasarıma geçelim.
Tasarım kısmı TextBox, Label, DateTimePicker, DataGridView ve Button lardan oluşmaktadır.
Şimdi kodlarımızı oluşturalım.
Randevu.cs isimli Sınıfımızı Solution Explorer penceresini kullanarak aşağıdaki gibi oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
internal class Randevu { int id; string ad; string telefon; DateTime tarih; bool sigorta; string poliklinik; public int Id { get => id; set => id = value; } public string Ad { get => ad; set => ad = value; } public string Telefon { get => telefon; set => telefon = value; } public DateTime Tarih { get => tarih; set => tarih = value; } public bool Sigorta { get => sigorta; set => sigorta = value; } public string Poliklinik { get => poliklinik; set => poliklinik = value; } public Randevu(int id, string ad, string telefon, DateTime tarih, bool sigorta, string poliklinik) { this.id = id; this.ad = ad; this.telefon = telefon; this.tarih = tarih; this.sigorta = sigorta; this.poliklinik = poliklinik; } } |
Form için Ekle, Sil, Güncelle butonları ile Form yüklendiği zaman çalışacak kodlar ve DataGrid üzerinde tıklanan satıra ait bilgileri ilgili denetimlere aktaracak kodları oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ListClassHastane { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Randevu randevu; BindingList<Randevu> list = new BindingList<Randevu>(); private void Form1_Load(object sender, EventArgs e) { // ComboBox'a polikliniklerin eklenmesi string[] poliklinikler = { "Kardiyoloji", "Dahiliye", "Ortopedi", "Kulak Burun Boğaz", "Göz Hastalıkları", "Cildiye", "Nöroloji", "Üroloji", "Gastroenteroloji", "Radyoloji", "Psikiyatri", "Plastik Cerrahi", "Fizik Tedavi", "Onkoloji", "Endokrinoloji", "Hematoloji", "Kadın Hastalıkları ve Doğum", "Enfeksiyon Hastalıkları", "Üreme Endokrinolojisi ve İnfertilite", "Genel Cerrahi" }; cmbPoliklinik.Items.AddRange(poliklinikler); //dataGridView1.DefaultCellStyle.Font = new Font("Arial", 12); // Varsayılan hücre fontu ayarı //dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font("Arial", 12, FontStyle.Bold); // Sütun başlığı fontu ayarı list.Add(new Randevu(1, "Ahmet Aydın", "52154521", new DateTime(2023,11,23), true, "Göz")); list.Add(new Randevu(2, "Ayşe Uysal", "54511555", new DateTime(2023,11,24), true, "Kulak-Burun-Boğaz")); list.Add(new Randevu(3, "Hakan Demir", "52154521", new DateTime(2023,11,25), true, "Cilt")); list.Add(new Randevu(4, "Kemal Saygın", "52154521", new DateTime(2023,11,27), false, "Göz")); list.Add(new Randevu(5, "Mehmet Yılmaz", "55443322", new DateTime(2023, 11, 28), true, "Ortopedi")); list.Add(new Randevu(6, "Fatma Kaya", "52111223", new DateTime(2023, 11, 29), true, "Dahiliye")); list.Add(new Randevu(7, "Mustafa Arı", "53322114", new DateTime(2023, 11, 30), true, "Nöroloji")); list.Add(new Randevu(8, "Zeynep Yıldız", "52199887", new DateTime(2023, 12, 1), true, "Kardiyoloji")); list.Add(new Randevu(9, "Emre Çelik", "54321098", new DateTime(2023, 12, 2), false, "Gastroenteroloji")); list.Add(new Randevu(10, "Sevil Yılmaz", "55556789", new DateTime(2023, 12, 3), true, "Göğüs Hastalıkları")); list.Add(new Randevu(11, "Seda Akgün", "52223344", new DateTime(2023, 12, 4), true, "Dermatoloji")); list.Add(new Randevu(12, "Kadir Toprak", "53334455", new DateTime(2023, 12, 5), false, "Üroloji")); list.Add(new Randevu(13, "Şeyma Karadeniz", "54445566", new DateTime(2023, 12, 6), true, "Psikiyatri")); list.Add(new Randevu(14, "Cemal Yıldırım", "55556677", new DateTime(2023, 12, 7), true, "Plastik Cerrahi")); dataGridView1.DataSource = list.ToList(); } private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e) { try { txtId.Text = dataGridView1.CurrentRow.Cells["id"].Value.ToString(); txtAdSoyad.Text = dataGridView1.CurrentRow.Cells["ad"].Value.ToString(); txtTelefon.Text = dataGridView1.CurrentRow.Cells["telefon"].Value.ToString(); cmbPoliklinik.Text = dataGridView1.CurrentRow.Cells["poliklinik"].Value.ToString(); chkSigorta.Checked = (Boolean)dataGridView1.CurrentRow.Cells["sigorta"].Value; dtpDogumTarih.Value = (DateTime)dataGridView1.CurrentRow.Cells["tarih"].Value; } catch (Exception) { throw; } } private void btnEkle_Click(object sender, EventArgs e) { int id=Convert.ToInt32(txtId.Text); string ad = txtAdSoyad.Text; string telefon=txtTelefon.Text; bool sigorta = chkSigorta.Checked; DateTime tarih = dtpDogumTarih.Value; string poliklinik = cmbPoliklinik.Text; Randevu yeniRandevu = new Randevu(id, ad,telefon,tarih,sigorta,poliklinik); list.Add(yeniRandevu); dataGridView1.DataSource = list.ToList(); } private void btnSil_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { // Seçili satır varsa, bu satırdan ilgili veriyi alabiliriz DataGridViewRow selectedRow = dataGridView1.SelectedRows[0]; // DataGridView'de sakladığınız nesne türüne (Randevu) dönüştürme işlemi yapabiliriz Randevu secilenRandevu = selectedRow.DataBoundItem as Randevu; if (secilenRandevu != null) { // Seçilen satırın Randevu türünde bir öğe olduğundan emin olduk // Şimdi secilenRandevu değişkeni, seçilen Randevu öğesini temsil ediyor // Bu öğeyi kullanabilirsiniz if (list.Contains(secilenRandevu)) { list.Remove(secilenRandevu); // Secilen öğe listeden silindi. } } } dataGridView1.DataSource = list.ToList(); } private void btnGuncelle_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { // Seçili satır varsa, bu satırdan ilgili veriyi alabiliriz DataGridViewRow selectedRow = dataGridView1.SelectedRows[0]; // DataGridView'de sakladığınız nesne türüne (Randevu) dönüştürme işlemi yapabiliriz Randevu secilenRandevu = selectedRow.DataBoundItem as Randevu; if (secilenRandevu != null) { // Yeni değerleri kullanarak seçilen öğenin özelliklerini güncelleme int id = Convert.ToInt32(txtId.Text); string ad = txtAdSoyad.Text; string telefon = txtTelefon.Text; bool sigorta = chkSigorta.Checked; DateTime tarih = dtpDogumTarih.Value; string poliklinik = cmbPoliklinik.Text; secilenRandevu.Ad = ad; secilenRandevu.Telefon = telefon; secilenRandevu.Sigorta = sigorta; secilenRandevu.Tarih = tarih; secilenRandevu.Poliklinik= poliklinik; // DataGridView'i güncelleme dataGridView1.DataSource = null; dataGridView1.DataSource = list; } } } } } |
Şimdi kodlarımızı bölüm bölüm açıklayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
private void Form1_Load(object sender, EventArgs e) { // ComboBox'a polikliniklerin eklenmesi string[] poliklinikler = { "Kardiyoloji", "Dahiliye", "Ortopedi", "Kulak Burun Boğaz", "Göz Hastalıkları", "Cildiye", "Nöroloji", "Üroloji", "Gastroenteroloji", "Radyoloji", "Psikiyatri", "Plastik Cerrahi", "Fizik Tedavi", "Onkoloji", "Endokrinoloji", "Hematoloji", "Kadın Hastalıkları ve Doğum", "Enfeksiyon Hastalıkları", "Üreme Endokrinolojisi ve İnfertilite", "Genel Cerrahi" }; cmbPoliklinik.Items.AddRange(poliklinikler); //dataGridView1.DefaultCellStyle.Font = new Font("Arial", 12); // Varsayılan hücre fontu ayarı //dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font("Arial", 12, FontStyle.Bold); // Sütun başlığı fontu ayarı list.Add(new Randevu(1, "Ahmet Aydın", "52154521", new DateTime(2023,11,23), true, "Göz")); list.Add(new Randevu(2, "Ayşe Uysal", "54511555", new DateTime(2023,11,24), true, "Kulak-Burun-Boğaz")); list.Add(new Randevu(3, "Hakan Demir", "52154521", new DateTime(2023,11,25), true, "Cilt")); list.Add(new Randevu(4, "Kemal Saygın", "52154521", new DateTime(2023,11,27), false, "Göz")); list.Add(new Randevu(5, "Mehmet Yılmaz", "55443322", new DateTime(2023, 11, 28), true, "Ortopedi")); list.Add(new Randevu(6, "Fatma Kaya", "52111223", new DateTime(2023, 11, 29), true, "Dahiliye")); list.Add(new Randevu(7, "Mustafa Arı", "53322114", new DateTime(2023, 11, 30), true, "Nöroloji")); list.Add(new Randevu(8, "Zeynep Yıldız", "52199887", new DateTime(2023, 12, 1), true, "Kardiyoloji")); list.Add(new Randevu(9, "Emre Çelik", "54321098", new DateTime(2023, 12, 2), false, "Gastroenteroloji")); list.Add(new Randevu(10, "Sevil Yılmaz", "55556789", new DateTime(2023, 12, 3), true, "Göğüs Hastalıkları")); list.Add(new Randevu(11, "Seda Akgün", "52223344", new DateTime(2023, 12, 4), true, "Dermatoloji")); list.Add(new Randevu(12, "Kadir Toprak", "53334455", new DateTime(2023, 12, 5), false, "Üroloji")); list.Add(new Randevu(13, "Şeyma Karadeniz", "54445566", new DateTime(2023, 12, 6), true, "Psikiyatri")); list.Add(new Randevu(14, "Cemal Yıldırım", "55556677", new DateTime(2023, 12, 7), true, "Plastik Cerrahi")); dataGridView1.DataSource = list.ToList(); } |
Bu kod, C# programlama dilinde bir Windows Forms uygulamasında kullanılabilecek bir form yüklenirken gerçekleştirilen işlemleri içeriyor. Kodun içeriğini aşağıda adım adım açıklayacağım:
- Form Yüklenirken ComboBox’a Öğelerin Eklenmesi
cmbPoliklinik
adındaki bir ComboBox’a poliklinik isimlerini ekliyoruz. Bu isimler, polikliniklerin adlarını içeren bir dizi olanpoliklinikler
dizisinden alınıyor.
- DataGridView için Veri Kaynağının Ayarlanması
dataGridView1
adında bir DataGridView (veri tablosu) var. Bu DataGridView kontrolü,list
adında bir koleksiyonun içeriğini gösterecek.list
koleksiyonuna,Randevu
sınıfından örnekler ekleniyor. Her bir örnek, randevuyla ilgili bilgileri içeriyor: randevu numarası, hasta adı, telefon numarası, randevu tarihi, durumu (true/false) ve poliklinik bilgisi.
- DataGridView’in Veri Kaynağının Ayarlanması
dataGridView1.DataSource = list.ToList();
satırı, DataGridView kontrolünün veri kaynağınılist
koleksiyonuna bağlar.ToList()
metodu, koleksiyonun bir kopyasını oluşturur ve DataGridView kontrolü için uygun bir veri yapısı sağlar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e) { try { txtId.Text = dataGridView1.CurrentRow.Cells["id"].Value.ToString(); txtAdSoyad.Text = dataGridView1.CurrentRow.Cells["ad"].Value.ToString(); txtTelefon.Text = dataGridView1.CurrentRow.Cells["telefon"].Value.ToString(); cmbPoliklinik.Text = dataGridView1.CurrentRow.Cells["poliklinik"].Value.ToString(); chkSigorta.Checked = (Boolean)dataGridView1.CurrentRow.Cells["sigorta"].Value; dtpDogumTarih.Value = (DateTime)dataGridView1.CurrentRow.Cells["tarih"].Value; } catch (Exception) { throw; } } |
Yukarıdaki kod, DataGridView’in hücrelerine tıkladığınızda, o hücreye ait verileri TextBox’lar, ComboBox ve DateTimePicker gibi kontrol elemanlarına aktaran bir olay işleyicisi (event handler
) içerir.
İşleyici, dataGridView1_CellEnter
adında bir metod içinde bulunur. Bu metod, DataGridView’in bir hücresine tıkladığınızda tetiklenir. İçeriğini adım adım açıklayalım:
dataGridView1_CellEnter
metodunun görevi, DataGridView’in belirli bir hücresine tıklandığında o hücreye ait verileri farklı kontrol elemanlarına atamaktır.- Kodun içinde
try-catch
bloğu kullanılmış.try
bloğu, potansiyel olarak hata oluşturabilecek işlemleri içerir.catch
bloğu ise olası hataların ele alındığı kısımdır. dataGridView1.CurrentRow.Cells["id"].Value.ToString();
gibi kod satırları, DataGridView’deki mevcut satırın belirli bir hücresinden veri alır ve bu veriyi ilgili kontrol elemanına atar.txtId.Text = dataGridView1.CurrentRow.Cells["id"].Value.ToString();
-> DataGridView’deki mevcut satırın “id” isimli hücresinden değeri alır vetxtId
adlı TextBox’a atar.txtAdSoyad.Text = dataGridView1.CurrentRow.Cells["ad"].Value.ToString();
-> DataGridView’deki mevcut satırın “ad” isimli hücresinden değeri alır vetxtAdSoyad
adlı TextBox’a atar.txtTelefon.Text = dataGridView1.CurrentRow.Cells["telefon"].Value.ToString();
-> DataGridView’deki mevcut satırın “telefon” isimli hücresinden değeri alır vetxtTelefon
adlı TextBox’a atar.cmbPoliklinik.Text = dataGridView1.CurrentRow.Cells["poliklinik"].Value.ToString();
-> DataGridView’deki mevcut satırın “poliklinik” isimli hücresinden değeri alır vecmbPoliklinik
adlı ComboBox’a atar.chkSigorta.Checked = (Boolean)dataGridView1.CurrentRow.Cells["sigorta"].Value;
-> DataGridView’deki mevcut satırın “sigorta” isimli hücresinden bool değeri alır vechkSigorta
adlı CheckBox’a atar.dtpDogumTarih.Value = (DateTime)dataGridView1.CurrentRow.Cells["tarih"].Value;
-> DataGridView’deki mevcut satırın “tarih” isimli hücresinden tarih değeri alır vedtpDogumTarih
adlı DateTimePicker’a atar.
Bu işlev, DataGridView’deki mevcut hücreye girildiğinde bu hücreye ait verileri farklı kontrol elemanlarına aktararak kullanıcıya gösterir. Bu sayede, DataGridView’deki verileri düzenlemek veya görüntülemek amacıyla kullanılabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
private void btnEkle_Click(object sender, EventArgs e) { int id=Convert.ToInt32(txtId.Text); string ad = txtAdSoyad.Text; string telefon=txtTelefon.Text; bool sigorta = chkSigorta.Checked; DateTime tarih = dtpDogumTarih.Value; string poliklinik = cmbPoliklinik.Text; Randevu yeniRandevu = new Randevu(id, ad,telefon,tarih,sigorta,poliklinik); list.Add(yeniRandevu); dataGridView1.DataSource = list.ToList(); } |
Bu kod parçası, bir “Ekle” butonuna tıklandığında çalışacak olan olay işleyicisini (event handler
) içerir. Bu olay işleyicisi, kullanıcı tarafından doldurulan metin kutuları, onay kutusu ve diğer kontrol elemanlarından alınan bilgilerle yeni bir Randevu
öğesi oluşturur ve bu öğeyi bir List<Randevu>
koleksiyonuna ekler. Daha sonra, DataGridView’in veri kaynağını bu güncellenmiş liste olarak ayarlar.
İşte kodun adım adım açıklaması:
btnEkle_Click
adındaki metod, “Ekle” butonuna tıklandığında çalışır (Click
olayı tetiklenir).- Metodun içinde, kullanıcının girdiği bilgileri değişkenlere aktarıyoruz:
id
,ad
,telefon
,sigorta
,tarih
vepoliklinik
gibi değişkenler, kullanıcının girdiği verileri ilgili kontrol elemanlarından alır.
- Ardından, bu bilgileri kullanarak yeni bir
Randevu
öğesi oluşturuyoruz:Randevu yeniRandevu = new Randevu(id, ad, telefon, tarih, sigorta, poliklinik);
-> Kullanıcıdan alınan bilgilerle yeni birRandevu
öğesi oluşturulur.
- Oluşturulan yeni
Randevu
öğesinilist
adlıList<Randevu>
koleksiyonuna ekliyoruz:list.Add(yeniRandevu);
-> Yeni oluşturulanRandevu
öğesinilist
koleksiyonuna ekler.
- Son olarak, DataGridView’in veri kaynağını güncellenmiş
list
koleksiyonu olarak ayarlıyoruz:dataGridView1.DataSource = list.ToList();
-> DataGridView’in veri kaynağınılist
koleksiyonuna dönüştürülmüş hali olarak ayarlar. Böylece, DataGridView’e yeni eklenen veriler görüntülenir.
Bu kod parçası, kullanıcıdan alınan bilgilerle yeni bir randevu oluşturarak bu bilgileri bir DataGridView’e ekler. Bu işlem, “Ekle” butonuna her tıklanışta gerçekleşir ve DataGridView güncellenmiş verilerle yeniden gösterilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
private void btnSil_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { DataGridViewRow selectedRow = dataGridView1.SelectedRows[0]; Randevu secilenRandevu = selectedRow.DataBoundItem as Randevu; if (secilenRandevu != null) { DialogResult result = MessageBox.Show("Seçili randevuyu silmek istediğinizden emin misiniz?", "Silme Onayı", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { if (list.Contains(secilenRandevu)) { list.Remove(secilenRandevu); MessageBox.Show("Seçili randevu başarıyla silindi.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Seçili randevu listede bulunamadı.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else { MessageBox.Show("Seçili satır bir randevu öğesi içermiyor.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } dataGridView1.DataSource = list.ToList(); } |
Bu C# kod parçası, bir Windows Forms uygulamasında bir butona tıklandığında seçili bir DataGridView satırını silmeyi hedefler. Kod, bir DataGridView
kontrolü üzerindeki seçili satırın bir Randevu
nesnesi içerip içermediğini kontrol eder ve ardından bu seçili randevuyu listeden kaldırır.
Kodun temel işlevselliği şu şekildedir:
- Eğer
dataGridView1
üzerinde en az bir satır seçiliyse işleme devam eder. - Seçili satırın
DataBoundItem
özelliğini kullanarak birRandevu
nesnesini alır. - Aldığı bu
Randevu
nesnesinin null olup olmadığını kontrol eder. - Eğer
Randevu
nesnesi null değilse, bir onay mesajı görüntüler ve kullanıcının seçili randevuyu silmek isteyip istemediğini sorar. - Kullanıcı “Evet” derse,
list
isimli bir koleksiyondan (List<Randevu>
) seçiliRandevu
nesnesini kaldırır ve bir bilgilendirme mesajı gösterir. - Eğer
Randevu
nesnesi null ise veya listede bulunamazsa, ilgili hatalı durum mesajlarını gösterir. - En son olarak, DataGridView’in veri kaynağını güncellemek için
list
koleksiyonunu DataGridView’e bağlar.
Burada Randevu
türünün nasıl tanımlandığına ve list
değişkeninin türünün ne olduğuna dair bir bilgi olmadığından, Randevu
ve list
türleri kod içinde belirtilmiş olmalıdır. Ayrıca, list
koleksiyonunun DataGridView ile senkronize olması sağlanmalıdır, böylece listeden bir öğe silindiğinde DataGridView güncellenir.
Eğer list
koleksiyonu BindingList<Randevu>
gibi otomatik olarak veri değişikliklerini izleyen bir yapı kullanıyorsa, list.Remove(secilenRandevu);
işlemi doğrudan DataGridView’i güncelleyecektir. Ancak, sıradan bir List<Randevu>
kullanılıyorsa, dataGridView1.DataSource = list.ToList();
satırı ile DataGridView’in güncellenmesi gerekecektir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
private void btnGuncelle_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { // Seçili satır varsa, bu satırdan ilgili veriyi alabiliriz DataGridViewRow selectedRow = dataGridView1.SelectedRows[0]; // DataGridView'de sakladığınız nesne türüne (Randevu) dönüştürme işlemi yapabiliriz Randevu secilenRandevu = selectedRow.DataBoundItem as Randevu; if (secilenRandevu != null) { // Yeni değerleri kullanarak seçilen öğenin özelliklerini güncelleme int id = Convert.ToInt32(txtId.Text); string ad = txtAdSoyad.Text; string telefon = txtTelefon.Text; bool sigorta = chkSigorta.Checked; DateTime tarih = dtpDogumTarih.Value; string poliklinik = cmbPoliklinik.Text; secilenRandevu.Ad = ad; secilenRandevu.Telefon = telefon; secilenRandevu.Sigorta = sigorta; secilenRandevu.Tarih = tarih; secilenRandevu.Poliklinik= poliklinik; // DataGridView'i güncelleme dataGridView1.DataSource = null; dataGridView1.DataSource = list; } } |
Bu kod parçası, “Güncelle” butonuna tıklandığında seçilen bir satırın verilerini, formdaki metin kutuları, onay kutusu ve diğer kontrol elemanlarından alınan yeni değerlerle günceller.
İşlevi adım adım açıklayalım:
btnGuncelle_Click
adındaki metod, “Güncelle” butonuna tıklandığında çalışır (Click
olayı tetiklenir).- İlk olarak, seçili bir satırın olup olmadığını kontrol eder:
if (dataGridView1.SelectedRows.Count > 0)
-> Eğer en az bir satır seçilmişse işlem devam eder.
- Seçili satır varsa, bu satırdan ilgili veriyi almak için aşağıdaki adımlar izlenir:
DataGridViewRow selectedRow = dataGridView1.SelectedRows[0];
-> DataGridView’de seçilen ilk satırı alır.Randevu secilenRandevu = selectedRow.DataBoundItem as Randevu;
-> Seçilen satırın içeriğiniRandevu
türüne dönüştürür. Eğer dönüşüm başarılıysa,secilenRandevu
değişkenine bu veriyi atar.
- Eğer seçilen öğe
secilenRandevu != null
ise, yani seçili öğe birRandevu
türünde ise, yeni değerleri kullanarak seçilen öğenin özelliklerini günceller:- Yeni değerleri formdaki metin kutularından, onay kutusundan ve diğer kontrol elemanlarından alır.
secilenRandevu.Ad = ad;
,secilenRandevu.Telefon = telefon;
gibi satırlarla seçilen öğenin ilgili özelliklerini günceller.
- DataGridView’i günceller:
dataGridView1.DataSource = null;
-> DataGridView’in mevcut veri kaynağını temizler.dataGridView1.DataSource = list;
-> DataGridView’in veri kaynağını güncellenmişlist
koleksiyonu olarak ayarlar. Böylece, DataGridView güncellenmiş verileriyle yeniden gösterilir.
Bu kod parçası, DataGridView’de seçilen bir satırın verilerini formdaki kontrol elemanlarından alınan yeni değerlerle günceller. Bu işlem “Güncelle” butonuna her tıklanışta gerçekleşir.