/// <summary> /// Заполнение listViewFacts + сортировка по Number /// </summary> private void FillListViewFacts() { listViewFacts.Items.Clear(); foreach (var varF in InFact.OrderBy(x => x.Num)) { listViewFacts.Items.Add(new ListViewItem(new[] { varF.Num.ToString(), varF.VarName, "=", varF.ValName })); } }
/// <summary> /// Удаление посылки /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ButtonDelFactClick(object sender, EventArgs e) { if (_selectedFact.ValName == null && _selectedFact.VarName == null) { return; } //вроде незачем спрашивать у пользователя подтверждение удаления посылки InFact.Remove(_selectedFact); FillListViewFacts(); }
/// <summary> /// Изменение посылки /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ButtonChangeFactClick(object sender, EventArgs e) { if (_selectedFact.ValName == null && _selectedFact.VarName == null) { return; } //открывается форма добавления var f = new AddChangeFact(_es, _filePath, _dbFileName, "Изменение посылки", false, true) { Var = _es.Variables.Single(x => x.Name == _selectedFact.VarName), Val = _es.Values.Single(x => x.Name == _selectedFact.ValName && x.DomainID == _es.Variables.Single(v => v.Name == _selectedFact.VarName).DomainID) }; if (f.ShowDialog() != DialogResult.OK) { return; } //2. Если ОК, то выполняется проверка на совпадение var same = InFact.Where(x => x.VarName == f.Var.Name && x.ValName == f.Val.Name); if (same.Any()) { MessageBox.Show("Такая посылка уже есть в этом правиле"); return; } //3. Если не совпадает, то новая посылка добавляется в список InFact.Remove(_selectedFact); try { _selectedFact.VarName = f.Var.Name; _selectedFact.ValName = f.Val.Name; _selectedFact.Num = InFact.Count + 1; } catch (ArgumentException exception) { MessageBox.Show(exception.Message); } InFact.Add(_selectedFact); FillListViewFacts(); }
private void ListViewFactsDragDrop(object sender, DragEventArgs e) { if (listViewFacts.SelectedItems.Count == 0) { return; } Point cp = listViewFacts.PointToClient(new Point(e.X, e.Y)); ListViewItem dragToItem = listViewFacts.GetItemAt(cp.X, cp.Y); //куда if (dragToItem == null) { return; } int dragIndex = dragToItem.Index; //номер строки, куда var sel = new ListViewItem[listViewFacts.SelectedItems.Count]; //что for (int i = 0; i < listViewFacts.SelectedItems.Count; i++) { sel[i] = listViewFacts.SelectedItems[i]; } foreach (ListViewItem lvi in sel) { if (dragIndex == lvi.Index) { continue; //если ничего никуда не перетаскивается } var v1 = InFact.Single(x => x.VarName == dragToItem.SubItems[1].Text && x.ValName == dragToItem.SubItems[3].Text); InFact.Remove(v1); v1.Num = lvi.Index + 1; InFact.Add(v1); var v2 = InFact.Single(x => x.VarName == lvi.SubItems[1].Text && x.ValName == lvi.SubItems[3].Text); InFact.Remove(v2); v2.Num = dragIndex + 1; InFact.Add(v2); } FillListViewFacts(); }
void FEventAddFact(Variables var, Values val) { //Если ОК, то выполняется проверка на совпадение var same = InFact.Where(x => x.VarName == var.Name && x.ValName == val.Name); if (same.Any()) { MessageBox.Show("Такая посылка уже есть в этом правиле"); return; } //Если не совпадает, то новая посылка добавляется в список try { InFact.Add(new Fact { VarName = var.Name, ValName = val.Name, Num = InFact.Count + 1 }); } catch (ArgumentException exception) { MessageBox.Show(exception.Message); } FillListViewFacts(); }