it-swarm.com.de

Wie programmgesteuert ein Element in einer CheckedListBox in C # überprüfen?

Ich habe eine CheckedListBox und möchte automatisch eines der darin enthaltenen Elemente ankreuzen.

In der Sammlung CheckedItems können Sie keine Elemente hinzufügen.

Irgendwelche Vorschläge?

48
Andrew Ducker

Sie müssen SetItemChecked mit dem entsprechenden Element aufrufen.

Die Dokumentation für CheckedListBox.ObjectCollection hat ein Beispiel, das jedes andere Element in einer Sammlung überprüft.

73
Jon Skeet

In meinem Programm habe ich den folgenden Trick verwendet:

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

Wie funktioniert das?
SetItemChecked (int index, bool value) ist eine Methode, die den exakten Status der Überprüfung für ein bestimmtes Element festlegt. Sie müssen den Index des Artikels angeben, den Sie überprüfen möchten (verwenden Sie die IndexOf-Methode, um als Argument den Text des Elements anzugeben) und geprüfter Zustand (true bedeutet, dass das Element aktiviert und false deaktiviert ist).
Diese Methode durchläuft alle Elemente in CheckedListBox und prüft (oder deaktiviert) der mit dem angegebenen Index.
Beispielsweise durchläuft ein kurzer Teil meines Code-FOREACH-Zyklus die angegebenen Programmnamen und ob das Programm in CheckedLitBox enthalten ist (CLB ...), prüft es:

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

Angenommen, Sie möchten das Element beim Klicken auf eine Schaltfläche überprüfen.

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

Wobei itemIndex der Index des zu überprüfenden Elements ist, beginnt er bei 0.

4
ePandit

Verwenden:

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

Nun Code, wo Sie alle überprüfen möchten:

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

So deaktivieren Sie alle:

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

Ich benutze eine Erweiterung:

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