Forum

c# goto ifadesi
 
Bildirimler
Hepsini Temizle

c# goto ifadesi

2 Yazılar
2 Üyeler
0 Reactions
1,845 Görüntüleme
(@yildirimbakar)
Gönderiler: 104
Estimable Member
Konu başlatıcı
 

Merhaba Arkadaşlar;

Datagridview'de alt satıra geçerken 4. hücredeki  tarih 3. hücredeki tarihten küçükse alt satıra geçmesin uyarı verip o satırda beklemesini istiyorum. Fakat aşağıdaki gibi yazdığımda küçük olan satıra geldiğinde uyarıyı veriyor tamam dediğimde yeniden uyarıyı veriyor. goto ifadesini nasıl kullanmam gerekli acaba.

Teşekkür ederim. 

private void dataGridView_RowLeave(object sender, DataGridViewCellEventArgs e)
{
KontrolEt:
for (int i = 0; i < dataGridView.Rows.Count - 1; i++)
{
if (Convert.ToDateTime(dataGridView.Rows[i].Cells[4].Value) < Convert.ToDateTime(dataGridView.Rows[i].Cells[3].Value))
{
MessageBox.Show("Planlanan başlangıç tarihi planlanan bitiş tarihinden büyük olamaz.", "Dikkat", MessageBoxButtons.OK, MessageBoxIcon.Warning);
goto KontrolEt;
}
else if (Convert.ToDateTime(dataGridView.Rows[i].Cells[4].Value) > Convert.ToDateTime(dataGridView.Rows[i].Cells[3].Value))
{
continue;
}
}
}

 
Gönderildi : 01/02/2023 17:16

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 33367
Illustrious Member Yönetici
 

Merhaba,

goto ifadesi programlama dünyasında genellikle önerilmeyen bir yapıdır ve pek çok durumda alternatifleri kullanılabilir. Ayrıca bu kodda goto ifadesini kullanmanız gereksizdir, çünkü döngünüz zaten alt satıra geçmeden önce tarihleri kontrol ediyor.

Sorunuzun çözümü için aşağıdaki kodları kullanabilirsiniz:

private void dataGridView_RowLeave(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow leavingRow = dataGridView.Rows[e.RowIndex];
if (leavingRow.Index == dataGridView.Rows.Count - 1) // Son satırda değilsek kontrol yap
{
DateTime leavingEndDate = Convert.ToDateTime(leavingRow.Cells[4].Value);
DateTime nextStartDate = Convert.ToDateTime(dataGridView.Rows[e.RowIndex + 1].Cells[3].Value);
if (leavingEndDate < nextStartDate)
{
MessageBox.Show("Planlanan başlangıç tarihi planlanan bitiş tarihinden büyük olamaz.", "Dikkat", MessageBoxButtons.OK, MessageBoxIcon.Warning);
dataGridView.CurrentCell = leavingRow.Cells[4];
return;
}
}
}

 

Bu kod, ayrıca alt satıra geçmeyi engellemek yerine, uygun olmayan tarihe odaklanıp kullanıcıya bir uyarı mesajı gösteriyor ve yanlış tarih hücresine odaklanıyor. Kullanıcı uyarıyı görür ve hatalı verileri düzeltmeden önce işleme devam edemez. Böylece, kullanıcının yanlış girişleri düzeltilmeden önce başka bir satıra geçmesi engellenir.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 24/03/2023 08:56

Paylaş: