예제 #1
0
        /// <summary>
        /// Перетаскивание правил
        /// </summary>
        private void lstRules_AfterDrop(object sender, AfterDropEventArgs e)
        {
            string s  = (e.Data as string);
            Rule   pr = rules[s.Substring(0, s.IndexOf(':'))];

            rules.RemoveAt(e.SIndex);
            rules.Insert(e.FIndex, pr.Name, pr);
        }
예제 #2
0
        private void RefreshRule()
        {
            int  si = lstRules.SelectedIndex;
            Rule r  = rules[getSelectedRuleName()];

            lstRules.Items.RemoveAt(si);
            lstRules.Items.Insert(si, r.Name + ": " + r.ToString());
            lstRules.SelectedIndex = si;
        }
예제 #3
0
        /// <summary>
        /// Кнопка "Изменить правило"
        /// </summary>
        private void btnEditRule_Click(object sender, EventArgs e)
        {
            if (lstRules.SelectedIndex < 0)
            {
                MessageBox.Show("Сначала необходимо выбрать правило");
                return;
            }
            string     old = getSelectedRuleName();
            int        pos = lstRules.SelectedIndex;
            frmAddRule fr  = new frmAddRule(this, old, rules[old].Reasoning);

            if (fr.ShowDialog() == DialogResult.OK)
            {
                Rule r = rules[old];
                r.Name      = old;
                r.Reasoning = newReasoning;
                rules.Remove(old);
                rules.Add(newRule, r);
                lstRules.Items[pos] = newRule + ": " + r.ToString();//newRule;
            }
        }
예제 #4
0
        private void btnDelVar_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex < 0)
            {
                MessageBox.Show("Сначала необходимо выделить переменную");
                return;
            }
            if (MessageBox.Show("Действительно удалиь переменную? Будут отменены выводы во всех правилах, ее выводящих.", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
            {
                return;
            }

            // удаление правила
            Variable dv = vars[listBox1.SelectedItem.ToString()];

            for (int i = 0; i < es.Rules.Vals.Count; i++)
            {
                Rule r = es.Rules.Vals[i];
                if (r.Result.V.CompareTo(dv) == 0)
                {
                    r.Result = null;
                }
                for (int j = 0; j < r.Reasons.Count; j++)
                {
                    if (r.Reasons[j].V.CompareTo(dv) == 0)
                    {
                        r.Reasons.RemoveAt(j);
                        if (r.Reasons.Count == 0)
                        {
                            es.Rules.Remove(r.Name);
                        }
                    }
                }
            }

            // удаление самой переменной
            vars.Remove(listBox1.SelectedItem.ToString());
            listBox1.Items.Remove(listBox1.SelectedItem);
        }
예제 #5
0
        /// <summary>
        /// Кнопка "Добавить правило"
        /// </summary>
        private void btnAddRule_Click(object sender, EventArgs e)
        {
            frmAddRule f = new frmAddRule(this);

            if (f.ShowDialog() == DialogResult.OK)
            {
                if (rules.ContainsKey(newRule))
                {
                    MessageBox.Show("Правило с таким именем уже существует!");
                    return;
                }
                if (newRule == "")
                {
                    MessageBox.Show("Правило не может быть без имени!");
                    return;
                }
                // добавляем правило
                Rule r = new Rule(newRule);
                r.Reasoning = newReasoning;
                rules.Add(newRule, r);
                lstRules.Items.Add(newRule + ": " + r.ToString());
                lstRules.SelectedItem = newRule + ": " + r.ToString();
            }
        }