web-dev-qa-db-fra.com

Comment vérifier par programme un élément dans une CheckedListBox en C #?

J'ai un CheckedListBox et je veux cocher automatiquement l'un des éléments qu'il contient.

La collection CheckedItems ne vous permet pas d'y ajouter des éléments.

Aucune suggestion?

48
Andrew Ducker

Vous devez appeler SetItemChecked avec l'élément correspondant.

documentation pour CheckedListBox.ObjectCollection a un exemple qui vérifie tous les autres éléments d'une collection.

73
Jon Skeet

Voici comment vous pouvez sélectionner/cocher ou désélectionner/décocher tous les éléments à la fois:

private void SelectAllCheckBoxes(bool CheckThem) {
    for (int i = 0; i <= (checkedListBox1.Items.Count - 1); i++) {
        if (CheckThem)
        {
            checkedListBox1.SetItemCheckState(i, CheckState.Checked);
        }
        else
        {
            checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
        }
    }  
}
21
B. Clay Shannon

Dans mon programme, j'ai utilisé l'astuce suivante:

CheckedListBox.SetItemChecked(CheckedListBox.Items.IndexOf(Item),true);

Comment ça marche:
SetItemChecked (int index, bool value) est une méthode qui définit l'état vérifié exact à l'élément spécifique. Vous devez spécifier l'index de l'élément que vous souhaitez vérifier (utiliser la méthode IndexOf, comme argument spécifiez le texte de l'élément) et l'état vérifié (true signifie que l'élément est vérifié, false non coché).
Cette méthode parcourt tous les éléments de CheckedListBox et vérifie (ou décoche) celui avec l'index spécifié.
Par exemple, un court morceau de mon code - le cycle FOREACH passe par les noms de programme spécifiés, et si le programme est contenu dans CheckedLitBox (CLB ...), le vérifie:

string[] ProgramNames = sel_item.SubItems[2].Text.Split(';');
foreach (string Program in ProgramNames)
{
    if (edit_mux.CLB_ContainedPrograms.Items.Contains(Program))
        edit_mux.CLB_ContainedPrograms.SetItemChecked(edit_mux.CLB_ContainedPrograms.Items.IndexOf(Program), true);
}
7
Ondrej Jánošík

Supposons que vous souhaitiez vérifier l'élément en cliquant sur un bouton.

private void button1_Click(object sender, EventArgs e)
{
    checkedListBox1.SetItemChecked(itemIndex, true);
}

Où itemIndex est l'index de l'élément à vérifier, il commence à 0.

4
ePandit

Utilisation:

string[] aa = new string[] {"adiii", "yaseen", "salman"};
foreach (string a in aa)
{
    checkedListBox1.Items.Add(a);
}

Maintenant codez où vous voulez tout vérifier:

private void button5_Click(object sender, EventArgs e)
{
    for(int a=0; a<checkedListBox1.Items.Count; a++)
        checkedListBox1.SetItemChecked(a, true);
}

Pour tout décocher:

private void button_Click(object sender, EventArgs e)
{
    for(int a=0; a<checkedListBox1.Items.Count; a++)
        checkedListBox1.SetItemChecked(a, false);
}
3
Adiii

J'utilise une extension:

public static class CheckedListBoxExtension
{
    public static void CheckAll(this CheckedListBox listbox)
    {
        Check(listbox, true);
    }

    public static void UncheckAll(this CheckedListBox listbox)
    {
        Check(listbox, false);
    }

    private static void Check(this CheckedListBox listbox, bool check)
    {
        Enumerable.Range(0, listbox.Items.Count).ToList().ForEach(x => listbox.SetItemChecked(x, check));
    }
}
2
Konstantin Samsonov