/// <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); }
/// <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); } }
///<summary> /// Конструктор по умолчанию ///</summary> public CAASmsEventForm(CAAEvent smsEvent) : this() { _smsEvent = smsEvent; FillControls(); }