web-dev-qa-db-ja.com

C#でCheckedListBoxの項目をプログラムでチェックする方法は?

CheckedListBoxがあり、その中のアイテムの1つを自動的にチェックしたい。

CheckedItemsコレクションでは、物を追加することはできません。

助言がありますか?

48
Andrew Ducker

関連するアイテムでSetItemCheckedを呼び出す必要があります。

CheckedListBox.ObjectCollectionのドキュメント には、コレクション内の他のすべてのアイテムをチェックする例があります。

73
Jon Skeet

これは、すべてのアイテムを一度に選択/選択または選択解除/選択解除する方法です。

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

私のプログラムでは、次のトリックを使用しました。

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

物事の仕組み:
SetItemChecked(int index、bool value)は、特定のアイテムで正確なチェック状態を設定するメソッドです。確認したいアイテムのインデックスを指定する必要があります(indexOfメソッドを引数として使用して、アイテムのテキストを指定します)およびチェック状態(trueはアイテムがチェックされ、falseはチェックされていないことを意味します)。
このメソッドは、CheckedListBoxのすべての項目を実行し、チェックします(またはチェックを外します)指定されたインデックスを持つもの。
たとえば、私のコードの短い断片-FOREACHサイクルは、指定されたプログラム名を実行し、プログラムがCheckedLitBox(CLB ...)、それをチェックします:

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

ボタンをクリックしたときにアイテムをチェックするとします。

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

ItemIndexはチェックするアイテムのインデックスであり、0から始まります。

4
ePandit

つかいます:

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

ここで、すべてをチェックする場所をコーディングします。

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

すべてのチェックを外すには:

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

私は拡張機能を使用します:

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