/// <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); }
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; }
/// <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; } }
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); }
/// <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(); } }