Распознать пункт CheckedListBox был выбран
До сих пор я никогда не имел дело с checkListBox1. Программа, которую я хочу создать, получит выгоду от ее использования, а не от использования многочисленных флажков.
У меня есть код:
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int selected = checkedListBox1.SelectedIndex;
this.Text = checkedListBox1.Items[selected].ToString();
}
Проблема в том, что каждый раз, когда я нажимаю на поле, и оно подсвечивается, оно затем выбирает подсвеченный объект. Что я ищу, так это распознавать изменения в том, что было выбрано, а не выделено.
То, что я также хочу знать, это сказать, если первый элемент индекса в CheckListBox проверен, а также 3-й, как я могу проверить, чтобы увидеть, если это правда или нет?
Я уверен, что в конце концов пойму это, но увидеть код очень поможет.
Скажем, у меня есть 3 коробки: Box A = messageBox.Show("a"); Box B = messageBox.Show("b"); Box C = messageBox.Show("c");
Он будет отображать только mbox, если флажок установлен. То, что я хочу знать, - как я могу проверить, чтобы, например, проверялись A и C, чтобы, если я нажал кнопку, два MessageBoxes отобразили либо "a", а затем "c"
2 ответа
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 на предмет того, проверен ли 1-й. и _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() + ".");
}
Если вы хотите получить коллекцию всех проверенных элементов, используйте checkListBox1.CheckedItems. Чтобы отобразить все отмеченные элементы при нажатии кнопки, используйте следующее:
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)
MessageBox.Show(checkedListBox1.CheckedItems[i].ToString());
}
Если вам нужны только их индексы, используйте взамен зарегистрированный список проверенных списков.