Bu makalede, C# Windows Forms üzerinde, kullanıcıdan alınan tamsayıların çift olanlarını filtreleyen bir uygulamanın nasıl yapılacağını adım adım anlatacağım. Bu uygulamada LINQ (Language Integrated Query) ile veri filtreleme işlemini göreceğiz.
Projenin Amacı
- Kullanıcı, virgülle ayrılmış tamsayıları bir metin kutusuna girer.
- Program, LINQ kullanarak çift sayıları filtreler.
- Sonuçlar, ListBox kontrolünde gösterilir.
- Çift sayı bulunamazsa kullanıcıya bir bilgi mesajı gösterilir.
Gerekli Araçlar
- Visual Studio (2022 veya daha yeni bir sürüm önerilir)
- .NET Framework ile Windows Forms App (C#)
Uygulamanın Adımları
1. Windows Forms Projesi Oluşturma
- Visual Studio’yu açın ve yeni bir Windows Forms App (.NET Framework) projesi oluşturun.
- Projenize bir isim verin (örneğin:
CiftSayilarFiltreleme
).
2. Form Tasarımı
Form tasarımını aşağıdaki gibi oluşturun:
- Label: Kullanıcıya bilgi vermek için (
"Virgülle ayrılmış tamsayıları girin:"
yazabilir). - TextBox (
txtSayilar
): Kullanıcıdan tamsayı dizisini almak için. - Button (
btnFiltrele
): Filtreleme işlemini başlatmak için. - ListBox (
lstSonuc
): Filtrelenmiş çift sayıları göstermek için.
Form Görünümü:
3. Kod Ekleme
Form tasarımından sonra, aşağıdaki kodu Form1.cs
dosyasına ekleyin. Bu kod, çift sayıları filtreleyen ana işlevi sağlar.
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 | private void btnFiltrele_Click(object sender, EventArgs e) { try { // Kullanıcıdan alınan metni parçala string giris = txtSayilar.Text; int[] sayilar = giris .Split(',') // Virgül ile ayır .Select(x => int.Parse(x.Trim())) // Her birini tamsayıya dönüştür .ToArray(); // LINQ ile çift sayıları filtrele var ciftSayilar = sayilar.Where(num => num % 2 == 0); // Sonuçları ListBox'a ekle lstSonuc.Items.Clear(); // Önce temizle foreach (var sayi in ciftSayilar) { lstSonuc.Items.Add(sayi); } // Çift sayı yoksa bilgi mesajı göster if (!ciftSayilar.Any()) { MessageBox.Show("Çift sayı bulunamadı.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show($"Bir hata oluştu: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } |
Kodun Açıklaması
1. Kullanıcıdan Girdi Alma
1 2 3 | string giris = txtSayilar.Text; |
- TextBox’tan (txtSayilar) alınan metni bir string değişkenine atıyoruz.
2. Metni Tamsayı Dizisine Dönüştürme
1 2 3 4 5 6 | int[] sayilar = giris .Split(',') // Virgül ile ayır .Select(x => int.Parse(x.Trim())) // Her birini tamsayıya dönüştür .ToArray(); |
- Kullanıcı girdisini virgüllerle bölerek bir string dizisi oluşturuyoruz.
Select
metodu ile her bir elemanı tamsayıya (int
) dönüştürüyoruz.ToArray()
ile sonucu bir diziye çeviriyoruz.
3. Çift Sayıları Filtreleme
1 2 3 | var ciftSayilar = sayilar.Where(num => num % 2 == 0); |
Where
metodu ile, çift sayıları (2’ye bölündüğünde kalan 0 olan sayılar) filtreliyoruz.- Bu işlem, LINQ ile gerçekleştirilir.
4. Sonuçları Gösterme
1 2 3 4 5 6 7 | lstSonuc.Items.Clear(); // Önce ListBox'ı temizle foreach (var sayi in ciftSayilar) { lstSonuc.Items.Add(sayi); } |
- Daha önceki sonuçlar varsa temizliyoruz.
- Filtrelenmiş çift sayıları
ListBox
kontrolüne ekliyoruz.
5. Çift Sayı Bulunamazsa Bilgilendirme
1 2 3 4 5 6 | if (!ciftSayilar.Any()) { MessageBox.Show("Çift sayı bulunamadı.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information); } |
Any()
metodu, koleksiyonda eleman olup olmadığını kontrol eder.- Eğer çift sayı yoksa kullanıcıya bir bilgi mesajı gösteriyoruz.
6. Hata Kontrolü
1 2 3 4 5 6 | catch (Exception ex) { MessageBox.Show($"Bir hata oluştu: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } |
- Kullanıcı yanlış bir giriş yaparsa veya hata oluşursa, bir hata mesajı görüntülenir.