solo - checklist c#
¿Cómo controlo programáticamente un elemento en un checklistbox en C#? (6)
Tengo un checklistbox, y quiero marcar automáticamente uno de los elementos en él.
La colección CheckedItems no le permite agregar cosas.
¿Alguna sugerencia?
Así es como puede seleccionar / marcar o anular la selección / desmarcar todos los elementos a la vez:
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);
}
}
}
En mi programa he usado el siguiente truco:
CheckedListBox.SetItemChecked(CheckedListBox.Items.IndexOf(Item),true);
¿Cómo funciona todo?
SetItemChecked (int index, bool value) es un método que establece el estado exacto de comprobación en el elemento específico. Debe especificar el índice del artículo que desea verificar ( use el método IndexOf, como argumento, especifique el texto del elemento ) y el estado verificado ( verdadero significa que el elemento está marcado, falso no seleccionado ).
Este método ejecuta todos los elementos en CheckedListBox y comprueba ( o desmarca ) el que tiene el índice especificado.
Por ejemplo, una pequeña parte de mi código - FOREACH ciclo se ejecuta a través de nombres de programa especificados, y si el programa está contenido en CheckedLitBox ( CLB ... ), lo comprueba:
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);
}
Supongamos que desea verificar el elemento al hacer clic en un botón.
private void button1_Click(object sender, EventArgs e)
{
checkedListBox1.SetItemChecked(itemIndex, true);
}
Donde itemIndex es el índice del ítem a verificar, comienza desde 0.
Utilizar:
string[] aa = new string[] {"adil ", "nenooo", "mele naj"};
foreach (string a in aa)
{
checkedListBox1.Items.Add(a);
}
Ahora codifique donde quiere verificar todo:
private void button5_Click(object sender, EventArgs e)
{
for(int a=0; a<checkedListBox1.Items.Count; a++)
checkedListBox1.SetItemChecked(a, true);
}
Para desmarcar todo:
private void button_Click(object sender, EventArgs e)
{
for(int a=0; a<checkedListBox1.Items.Count; a++)
checkedListBox1.SetItemChecked(a, false);
}
Yo uso una extensión:
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));
}
}
SetItemChecked llamar a SetItemChecked con el artículo relevante.
La documentación de CheckedListBox.ObjectCollection tiene un ejemplo que verifica todos los demás elementos de una colección.