void applyFilter()
{
try
{
Cursor.Current = Cursors.WaitCursor;
string filter = filterTextBox.Text.ToLower();
destinationCheckedListBox.BeginUpdate();
List<object> checkedItems = CheckedItems;
List<object> filteredItems = new List<object>();
for (int i = 0; i < _destinationItems.Count; i++)
{
PropertyItem item = _destinationItems[i];
if (i == 0 || checkedItems.Contains(item) || item.Name.ToLower().Contains(filter)) filteredItems.Add(item);
}
destinationCheckedListBox.Items.Clear();
foreach (var item in filteredItems)
{
destinationCheckedListBox.Items.Add(item);
}
for (int i = 0; i < destinationCheckedListBox.Items.Count; i++)
{
destinationCheckedListBox.SetItemChecked(i, checkedItems.Contains(destinationCheckedListBox.Items[i]));
}
}
finally
{
destinationCheckedListBox.EndUpdate();
Cursor.Current = Cursors.Default;
}
}