コード例 #1
0
        /// <summary>
        /// Возвращает значение, показывающее были ли изменения в данном элементе управления
        /// </summary>
        /// <returns></returns>
        private bool GetChangeStatus(CAAEvent obj)
        {
            if (textBoxDescription.Text != obj.Description ||
                dictionaryComboEventType.SelectedItem != _smsEvent.EventType ||
                comboBox1.SelectedItem != _smsEvent.EventCategory ||
                dictionaryComboEventClass.SelectedItem != _smsEvent.EventClass ||
                comboBoxIncident.SelectedItem != _smsEvent.IncidentType ||
                dateTimePickerEventDate.Value != _smsEvent.RecordDate ||
                textBoxDescription.Text != _smsEvent.Description ||
                textBoxRemarks.Text != _smsEvent.Remarks)
            {
                return(true);
            }

            //Проверка на содержание объекта в коллекции
            IEnumerable <CAASmsConditionControl> conds = flowLayoutPanelConditions.Controls.OfType <CAASmsConditionControl>();

            if (conds.Select(scc => _smsEvent.EventConditions.GetItemById(scc.EventCondition.ItemId)).Any(r => r == null))
            {
                return(true);
            }
            //Проверка на null-значение объекта находящагося в коллекции при не-null-значении объекта в контроле
            if (conds.Any(cond => _smsEvent.EventConditions.GetItemById(cond.EventCondition.ItemId).Value == null &&
                          cond.ConditionValue != null))
            {
                return(true);
            }

            //Проверка эквивалентность значений объектов в коллекции и контролах
            if (conds.Any(cond => !_smsEvent.EventConditions.GetItemById(cond.EventCondition.ItemId).Value.Equals(cond.ConditionValue)))
            {
                return(true);
            }
            return(false);
        }
コード例 #2
0
        /// <summary>
        /// Применить к объекту сделанные изменения на контроле.
        /// Если не все данные удовлетворяют формату ввода (например при вводе чисел), свойства объекта не изменяются, возвращается false
        /// Вызов base.ApplyChanges() обязателен
        /// </summary>
        /// <returns></returns>
        private void ApplyChanges(CAAEvent obj)
        {
            obj.EventType     = dictionaryComboEventType.SelectedItem as CAASmsEventType;
            obj.EventCategory = comboBox1.SelectedItem as CAAEventCategory;
            obj.EventClass    = dictionaryComboEventClass.SelectedItem as CAAEventClass;
            obj.IncidentType  = comboBoxIncident.SelectedItem as IncidentType;
            obj.RecordDate    = dateTimePickerEventDate.Value;
            obj.Description   = textBoxDescription.Text;
            obj.Remarks       = textBoxRemarks.Text;

            obj.EventConditions.Clear();
            foreach (var smsConditionControl in flowLayoutPanelConditions.Controls.OfType <CAASmsConditionControl>())
            {
                smsConditionControl.ApplyChanges();
                obj.EventConditions.Add(smsConditionControl.EventCondition);
            }
        }
コード例 #3
0
 ///<summary>
 /// Конструктор по умолчанию
 ///</summary>
 public CAASmsEventForm(CAAEvent smsEvent)
     : this()
 {
     _smsEvent = smsEvent;
     FillControls();
 }