Çözüldü C# Listbox kısıtlama

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Mert Pektaş

Decapat
Katılım
21 Kasım 2021
Mesajlar
81
Daha fazla  
Cinsiyet
Erkek
Merhaba ben nöbetçi takip sistemi yapıyorum ve listboxa item ekliyorum fakat sadice 3 tane eklemek istiyorum 4.yü eklediğinde sistem en fazla 3 nöbetçi koyabilirsiniz! Uyarısını verecek yardımcı olursanız sevinirim.
 
Çözüm
Tamamdır. Button1 içerisini önce bu hale getirin;

C#:
            int list_count = listBox1.Items.Count;
            if ( list_count < 3)
            {
                if (listBox1.SelectedItem == "Mert")
                {
                    listBox2.Items.Add("Mert");
                    listBox1.Items.Remove("Mert");
                }
                else if (listBox1.SelectedItem == "Kaan")
                {
                    listBox2.Items.Add("Kaan");
                    listBox1.Items.Remove("Kaan");
                }
                else if (listBox1.SelectedItem == "Burak")
                {
                    listBox2.Items.Add("Burak");
                    listBox1.Items.Remove("Burak");
                }
                else if (listBox1.SelectedItem == "Enes")
                {
                    listBox2.Items.Add("Enes");
                    listBox1.Items.Remove("Enes");
                }
                else if (listBox1.SelectedItem == "Ege")
                {
                    listBox2.Items.Add("Ege");
                    listBox1.Items.Remove("Ege");
                }
                else if (listBox1.SelectedItem == "Emir")
                {
                    listBox2.Items.Add("Emir");
                    listBox1.Items.Remove("Emir");
                }
                else if (listBox1.SelectedItem == "Muharrem")
                {
                    listBox2.Items.Add("Muharrem");
                    listBox1.Items.Remove("Muharrem");
                }
                else if (listBox1.SelectedItem == "Belenay")
                {
                    listBox2.Items.Add("Belenay");
                    listBox1.Items.Remove("Belenay");
                }
                else if (listBox1.SelectedItem == "Kezban")
                {
                    listBox2.Items.Add("Kezban");
                    listBox1.Items.Remove("Kezban");
                }
            }
            else
            {
                MessageBox.Show("En fazla 3 değer girebilirsiniz.");
            }
Böyle yapın ve 500 tane if yerine bir container kullanıp içinde olup olmadığına bakın.
Tonla indentin bir yararı yok. Okumayı zorlaştırıyor.
Birden fazla kez kullanmayacaksanız değişkene atamanıza gerek yok. Zaten release modda compiler bu şekilde yapar. Bu da okumayı zorlaştırıyor. İnsana başka nerede kullanıldı acaba diye sorduruyor.
C# container'larını bilmediğim için yapmadım. @Eray T bir şeyler önerebilir.

Kod:
if (listBox2.Items.Count >= 3)
{
    MessageBox.Show("En fazla 3 değer girebilirsiniz.");
    return;
}


if (listBox1.SelectedItem == "Mert")
{
    listBox2.Items.Add("Mert");
    listBox1.Items.Remove("Mert");
}
else if (listBox1.SelectedItem == "Kaan")
{
    listBox2.Items.Add("Kaan");
    listBox1.Items.Remove("Kaan");
}
...
 
Zaten release modda compiler bu şekilde yapar. Bu da okumayı zorlaştırıyor. İnsana başka nerede kullanıldı acaba diye sorduruyor.
C# container'larını bilmediğim için yapmadım. @Eray T bir şeyler önerebilir.

Aynen öyle hocam.
OOP'ye uymuyor üyenin algoritması.

Daha basiti ve dinamik hali bu şekilde yapılabilir;
C#:
public void process(){
    int list_count = listBox2.Items.Count;
    if (list_count < 3){
        if (listBox1.SelectedIndex != -1){
            int select_item = listBox1.SelectedIndex;
            listBox2.Items.Add(listBox1.Items[select_item]);
            istBox1.Items.Remove(select_item);
        }else{
            MessageBox.Show("Lütfen önce değer seçiniz");
        }
    }else{
            MessageBox.Show("En fazla 3 değer ekleyebilirsiniz");
    }
}
 
Son düzenleme:

Yeni konular

Geri
Yukarı