Ваша проблема начинается здесь.
FormsCheckedListBox.Items.Add(new ObjectToExport(form));
и
var isAllChecked = FormsCheckedListBox.Items.OfType<CheckBox>().All(c => c.Checked);
Вы добавляете экземпляры 'ObjectToExport
' в FormsCheckedListBox, но во время фильтрации вы проверяете фильтрацию с помощьюCheckBox
.
Это означает, что ваш отфильтрованный запрос всегда возвращает пустой, а запрос никогда не достигает All.Это можно продемонстрировать на следующем примере.
var list = new [] { 1,2,3,4};
var result = list.OfType<string>().All(x=> {Console.WriteLine("Inside All"); return false;});
Результатом выше будет True
, и он никогда не напечатает текст «Inside All».Это то, что происходит с вашими запросами.
Вы можете узнать, установлен ли какой-либо из флажков, используя
var ifAnyChecked = checkedListBox1.CheckedItems.Count !=0;
Чтобы изменить состояние, вы можете сделать следующее.
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemCheckState(i) == CheckState.Checked)
{
// Do something
}
}