2011-04-17 9 views
0

J'ai une petite forme dans laquelle l'utilisateur écrit le nom d'un élément, puis quand il clique sur "Ajouter" il y a une instruction qui doit vérifier s'il y a déjà le même élément dans le checkedListBox.vérifier si un CheckedListBox est vide

Je suis à la recherche du "si" statment qui a vérifié si la liste est vide ou avec un élément.

private void button2_Click(object sender, EventArgs e) 
{ 
    foreach (var item in checkedListBox1.Items) 
    { 
     if (itemName.Text == item.ToString()) 
     { 
      DialogResult result = MessageBox.Show("?", "Question", MessageBoxButtons.YesNoCancel); 
      if (result == DialogResult.Yes) 
      { 
       checkedListBox1.Items.Add(itemName.Text); 
      } 
      else if (result == DialogResult.No) 
      { 
       //clear the forms 
      } 
     } 
     else 
     { 
      checkedListBox1.Items.Add(itemName.Text); 
      timeLeft = 2; 
      timer1.Start(); 
     } 
    } 
} 
     //checkedListBox1.Items.Add(itemName.Text); 
     //timeLeft = 2; 
     //timer1.Start(); 
+2

Je ne pense pas que vous pouvez ajouter des éléments à une liste en l'énumérant – Magnus

Répondre

7
if(checkedListBox1.Items.Count > 0) { 
    // It contains items 
} else { 
    // It doesn't 
} 

EDIT: est de vérifier si le CheckedListBox est vide ou pas,

if(checkedListBox1.Items.Contains(theItemToCheck)) { 
    // The item is already in the CheckedListBox 
} 

est de vérifier si un article est déjà dans la CheckedListBox.

+0

merci, ça marche, désolé si je vous ai confus les gars ... –

1

Vous pouvez vérifier si votre ListBox contient l'élément simplement en utilisant la méthode Contains de la collection:

if (checkListBox1.Items.Contains(itemName.text)) 
{ 
    //do something 
} 
0

Il devrait y avoir quelque chose comme checkedListBox1.Items.Count.

1

Pouvez-vous jeter un oeil à LINQ?

var exists = checkedListBox1.Items.Where(item => item == itemName.Text).Any(); 
if(exists) 
    item exists 
else 
    item doesn't exists 
1

Eh bien, votre code ne fonctionnera pas puisque vous ne pouvez pas modifier la collection que vous itérez. Essayer de le faire se traduira par une InvalidOperationException(collection a été modifiée;. Opération d'énumération ne peut pas exécuter)

Vous devriez terminer la boucle quand vous trouvez votre match, puis obtenir la confirmation de l'utilisateur et après modifier la liste/collection.

Alors:

  1. Essayez de trouver un match (et sortir de la boucle si vous bouclez la collection)
  2. obtenir la confirmation de l'utilisateur
  3. Modifier la collection
0

Essayez:

if(checkedListBox.Items.Count()>0) 
{ 
    // it means you have items 
} 
else 
{ 
    // it means you have empty checkedListBox 
}