2010-02-01 5 views
3

Si j'ai coché la case de liste dans les formes Win que je remplis comme ceItérer via CheckedListBox dans WinForms?

List<Tasks> tasks = db.GetAllTasks(); 
     foreach (var t in tasks) 
      tasksCheckedListBox.Items.Add(t.Name); 

Comment puis-je itérer tasksCheckedListBox.Items et mettre quelques cases à cocher comme vérifiés?

Merci

+0

Est-ce que les informations renvoyées par db.GetAllTasks() inclure si l'élément est coché ou non? Ou déterminez-vous si un élément doit être vérifié ou non après la création de ListBox en fonction d'une autre source de données ou d'un autre critère? – BillW

+0

Je ne détermine sa propriété vérifiée que par son nom La méthode GetAllTasks() ne contient aucune information à propos de checked. – eomeroff

+0

Donc, quelque chose dans la propriété .Name de chaque tâche vous indique si elle est cochée ou non: si c'est le cas, alors je pense que vous pouvez adapter la technique dans la réponse de Jake Pearson ci-dessous. Ensuite, bien sûr, vous allez devoir ajouter du code pour analyser la chaîne (que nous devons supposer que la propriété .Name contient) afin de déterminer l'état vérifié. Dans une question comme celle-ci, il est toujours bon de donner autant d'informations que possible sur les critères que vous utilisez pour déterminer comment vous évaluez les données afin de définir les paramètres. Bonne chance ! – BillW

Répondre

3

Si vous voulez le faire après que les éléments ont été ajoutés, il est un exemple on MSDN

Copié ici:

private void CheckEveryOther_Click(object sender, System.EventArgs e) { 
    // Cycle through every item and check every other. 

    // Set flag to true to know when this code is being executed. Used in the ItemCheck 
    // event handler. 
    insideCheckEveryOther = true; 

    for (int i = 0; i < checkedListBox1.Items.Count; i++) { 
     // For every other item in the list, set as checked. 
     if ((i % 2) == 0) { 
      // But for each other item that is to be checked, set as being in an 
      // indeterminate checked state. 
      if ((i % 4) == 0) 
       checkedListBox1.SetItemCheckState(i, CheckState.Indeterminate); 
      else 
       checkedListBox1.SetItemChecked(i, true); 
     } 
    }   

    insideCheckEveryOther = false; 
} 
6

La méthode add prend un paramètre IsChecked facultatif. Vous pouvez ensuite ajouter vos objets dans la zone de liste vérifiée dans l'état correct.

List<Tasks> tasks = db.GetAllTasks(); 
     foreach (var t in tasks) 
      tasksCheckedListBox.Items.Add(t.Name, isChecked); 

Ou vous pouvez changer le vous état coché d'un élément après l'ajouter quelque chose comme ceci:

foreach(var task in tasks) 
{ 
    tasksCheckedListBox.SetItemChecked(clb.Items.IndexOf(task), isChecked); 
} 
+0

Merci je viens de l'avoir. – eomeroff