识别CheckedListBox项已被选中

时间:2012-10-25 14:24:33

标签: c# winforms checkedlistbox selectedindexchanged

到目前为止,我从未处理过checkedListBox1。我想要制作的程序将受益于使用它而不必使用大量的复选框。

我有代码:

private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    int selected = checkedListBox1.SelectedIndex;
    this.Text = checkedListBox1.Items[selected].ToString();
}

这个问题是,每次我点击框并突出显示时,它都会选择突出显示的对象。我正在寻找的是识别所选内容的变化,而不是突出显示。

我还想知道的是,如果检查CheckListBox中的第一个索引项以及第三个索引项,我将如何检查它是否为真?

我确信我最终会弄明白,但看到代码会非常有帮助。

说我有3个盒子:     方框A = messageBox.Show(“a”);     方框B = messageBox.Show(“b”);     方框C = messageBox.Show(“c”);

如果选中此框,则仅显示mbox。我想知道的是如何检查,例如,是否检查A和C,以便如果我按下按钮,两个messageBoxes将显示“a”然后“c”

2 个答案:

答案 0 :(得分:6)

   private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        // a checkbox is changing
        // but value is not updated yet

    }

    private void checkedListBox1_MouseUp(object sender, MouseEventArgs e)
    {
        Debug.WriteLine(checkedListBox1.CheckedItems.Count);
        Debug.WriteLine(checkedListBox1.CheckedItems.Contains(checkedListBox1.Items[0]));
    }

我认为您应该在MouseUp中检查是否检查了1st。和_ItemCheck适用于复选框正在更改但值尚未更新的情况。

参见参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.items.aspx

   // First show the index and check state of all selected items. 
foreach(int indexChecked in checkedListBox1.CheckedIndices) {
    // The indexChecked variable contains the index of the item.
    MessageBox.Show("Index#: " + indexChecked.ToString() + ", is checked. Checked state is:" +
                    checkedListBox1.GetItemCheckState(indexChecked).ToString() + ".");
}

// Next show the object title and check state for each item selected. 
foreach(object itemChecked in checkedListBox1.CheckedItems) {

    // Use the IndexOf method to get the index of an item.
    MessageBox.Show("Item with title: \"" + itemChecked.ToString() + 
                    "\", is checked. Checked state is: " + 
                    checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(itemChecked)).ToString() + ".");
}

答案 1 :(得分:1)

如果要获取所有已检查项目的集合,请使用checkedListBox1.CheckedItems。要在单击按钮时显示所有选中的项目,请使用以下命令:

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)
        MessageBox.Show(checkedListBox1.CheckedItems[i].ToString());
}

如果只需要他们的索引,请使用checkedListBox1.CheckedIndices。