CheckedListBoxがあり、その中のアイテムの1つを自動的にチェックしたい。
CheckedItems
コレクションでは、物を追加することはできません。
助言がありますか?
関連するアイテムでSetItemChecked
を呼び出す必要があります。
CheckedListBox.ObjectCollection
のドキュメント には、コレクション内の他のすべてのアイテムをチェックする例があります。
これは、すべてのアイテムを一度に選択/選択または選択解除/選択解除する方法です。
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);
}
}
}
私のプログラムでは、次のトリックを使用しました。
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);
}
ボタンをクリックしたときにアイテムをチェックするとします。
private void button1_Click(object sender, EventArgs e)
{
checkedListBox1.SetItemChecked(itemIndex, true);
}
ItemIndexはチェックするアイテムのインデックスであり、0から始まります。
つかいます:
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);
}
私は拡張機能を使用します:
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));
}
}