コード例 #1
0
        private void RuleFormLoad(object sender, EventArgs e)
        {
            if (Rule != null)
            {
                _rule            = new Rule(Rule.Name);
                _rule.Name       = Rule.Name;
                _rule.Premise    = Rule.Premise;
                _rule.Conclusion = Rule.Conclusion;
                _rule.Reason     = Rule.Reason;
            }
            else
            {
                _rule = new Rule($"Правило {KnowledgeBase.Rules.Count + 1}");
            }

            textBoxName.Text = _rule.Name;

            foreach (var fact in _rule.Premise)
            {
                listBoxPremise.Items.Add(fact);
            }

            foreach (var fact in _rule.Conclusion)
            {
                listBoxConclusion.Items.Add(fact);
            }

            richTextBoxReason.Text = _rule.Reason;

            buttonChangePremise.Enabled = false;
            buttonDeletePremise.Enabled = false;

            buttonChangeConclusion.Enabled = false;
            buttonDeleteConclusion.Enabled = false;
        }
コード例 #2
0
        private void ButtonOkClick(object sender, EventArgs e)
        {
            DialogResult = DialogResult.OK;

            if (_rule.Premise.Count == 0)
            {
                DialogResult = DialogResult.None;
                MessageBox.Show("В посылке должен быть хотя бы один факт");
                buttonAddPremise.Select();
                buttonAddPremise.Focus();
                return;
            }

            if (_rule.Premise.Count == 0)
            {
                DialogResult = DialogResult.None;
                MessageBox.Show("В заключении должен быть хотя бы один факт");
                buttonAddConclusion.Select();
                buttonAddConclusion.Focus();
                return;
            }

            if (KnowledgeBase.Rules.Contains(_rule) && Rule?.Index != _rule.Index)
            {
                DialogResult = DialogResult.None;
                MessageBox.Show("Правило с таким именем уже есть");
                textBoxName.Focus();
                textBoxName.Select();
                return;
            }

            if (string.IsNullOrWhiteSpace(_rule.Reason) || richTextBoxReason.Text == Rule.ToString())
            {
                _rule.Reason = _rule.ToString();
            }

            if (Rule == null)
            {
                Rule = new Rule(_rule.Name);
            }

            Rule.Name       = _rule.Name;
            Rule.Premise    = _rule.Premise;
            Rule.Conclusion = _rule.Conclusion;
            Rule.Reason     = _rule.Reason;
        }