У меня есть checklistbox, и я хочу автоматически пометить один из элементов в нем.
Коллекция CheckedItems не позволяет вам добавлять к ней что-то.
Любые предложения?
У меня есть checklistbox, и я хочу автоматически пометить один из элементов в нем.
Коллекция CheckedItems не позволяет вам добавлять к ней что-то.
Любые предложения?
Вам необходимо вызвать SetItemChecked с соответствующим элементом.
Так вы можете выбрать/отметить или отменить выбор/снять все элементы сразу:
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 unchecked).
Этот метод проходит через все элементы в CheckedListBox и проверяет (или unchecks) тот, у кого указанный указатель.
Например, короткий фрагмент моего кода - цикл 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[] {"adil ", "nenooo", "mele naj"};
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));
}
}