private void ButtonDeleteClick(object sender, EventArgs e) { if (listViewBindedTasks.SelectedItems.Count == 0) { return; } //Коллекция элементов которые нужно добавить в элемента управления содержащий список всех задач var itemsToInsert = new CommonCollection <BaseEntityObject>(); var detailDirectives = listViewBindedTasks.SelectedItems.OfType <ComponentDirective>().ToList(); foreach (var selectedItem in detailDirectives) { try { //Если задача по компоненту была сохранена в бд , то добавляем в список удаляемых элементов if (selectedItem.ItemId > 0) { itemsToInsert.Add(selectedItem); _bindedItemsToRemove.Add(selectedItem); } //Удаление задачи по компоненту из коллекции содержащей все связаные задачи _bindedItems.Remove(selectedItem); //Удаление задачи по компоненту из элемента управления содержащего список всех привязаных задач listViewBindedTasks.RemoveItem(selectedItem); //если в коллекции содержащей все связные задачи не содержится задач по компоненту, //которые принадлежат тому же компоненту что и текущая задача //требуется удалить компонент из коллекции содержащей все связные задачи if (_bindedItems.OfType <ComponentDirective>().All(x => x.ParentComponent.ItemId != selectedItem.ParentComponent.ItemId)) { _bindedItems.Remove(selectedItem.ParentComponent); //Удаление компонента из элемента управления содержащего список всех привязаных задач listViewBindedTasks.RemoveItem(selectedItem.ParentComponent); } if (_newBindedItems.ContainsKey(selectedItem.ParentComponent)) { //Удаление задачи по компоненту из коллекции новых привязанных зачач по компоненту _newBindedItems[selectedItem.ParentComponent].Remove(selectedItem); //Если среди новых привязанных задач по компоненту не содержатся задачи по компонентам, //которые принадлежат тому же компоненту что и текущая задача //требуется удалить компонент из словаря if (_newBindedItems[selectedItem.ParentComponent].Count == 0) { _newBindedItems.Remove(selectedItem.ParentComponent); } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while delete bind task record", ex); } } listViewTasksForSelect.InsertItems(itemsToInsert); }