到目前为止,我从未处理过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”
答案 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。