2013-08-22 1 views
1

Я сделал customCheckedListBox, который я хочу использовать для фильтрации dataGridView с опцией mulitselect. Я хотел бы иметь возможность поймать CheckedListBoxCheckedChange состояние, но CheckedListBox поддерживает только ItemCheck событие.customCheckedListBox CheckedChanged

Вот мой код:

private void customCheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    FilterDataGrid(); 
} 

private void FilterDataGrid() 
{ 
    var list4 = customCheckedListBox1.SelectedItems.Cast<string>().ToList(); 
    if (customCheckedListBox1.SelectedItems.Count != 0) 
    { 
     var result = list3.Where(Srodek => list4.Any(x => x == Srodek.Srodek.category1)); 
     DataTable ListAsDataTable3 = BuildDataTable2<CalaLinijka>(result); 
     DataView ListAsDataView3 = ListAsDataTable3.DefaultView; 
     dataGridView4.DataSource = view = ListAsDataView3; 
    } 

}

Проблема заключается в том, что ItemCheck событие может обрабатывать только один выбор, так что даже если пользователь решил выбрать более чем один opiton он будет показывать только первый выбранный пункт , Я думаю, что событие CheckedChanged будет работать в моем случае, но когда вызывается событие ItemCheck, пока нет CheckedItems. Они становятся «проверенными» после завершения ItemCheck. Поэтому, когда он идет в FilterDataGridCheckedChanged.Count равен 0.

Мой вопрос, как я должен обрабатывать CheckedChanged событие в CheckedListBox. Надеюсь, что я не перепутал слишком много. Если будут какие-либо вопросы, просто дайте мне знать, и я постараюсь больше узнать.

+1

Прокрутите все предметы и проверьте свойство 'Checked'. –

+0

Хорошо, я сделал это так. Теперь я проверю, все ли работает нормально. – user2592968

ответ

0

Я решил эту проблему, используя foreach loop (так же, как предложил KingKing) и положил его внутри MouseLeave.

private void customCheckedListBox1_MouseLeave(object sender, EventArgs e) 
{ 
    foreach (string itemChecked in customCheckedListBox1.CheckedItems) 
    { 
     CheckedList.Add(itemChecked); 
    } 
    FilterDataGrid(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^