Example #1
0
 /// <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 }));
     }
 }
Example #2
0
 /// <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();
 }
Example #3
0
        /// <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();
        }
Example #4
0
        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();
        }
Example #5
0
        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();
        }