/// <summary> /// Возвращает значение, показывающее были ли изменения в данном элементе управления /// </summary> /// <returns></returns> private bool GetChangeStatus(CAASmsEventType obj) { if (textBoxDescription.Text != obj.Description || textBoxName.Text != obj.FullName) { return(true); } //Проверка на содержание объекта в коллекции IEnumerable <CAASmsConditionControl> conds = flowLayoutPanelConditions.Controls.OfType <CAASmsConditionControl>(); if (conds.Select(scc => _smsEventType.EventConditions.GetItemById(scc.EventCondition.ItemId)).Any(r => r == null)) { return(true); } //Проверка на null-значение объекта находящагося в коллекции при не-null-значении объекта в контроле if (conds.Any(cond => _smsEventType.EventConditions.GetItemById(cond.EventCondition.ItemId).Value == null && cond.ConditionValue != null)) { return(true); } //Проверка эквивалентность значений объектов в коллекции и контролах if (conds.Any(cond => !_smsEventType.EventConditions.GetItemById(cond.EventCondition.ItemId).Value.Equals(cond.ConditionValue != null))) { return(true); } IEnumerable <EventTypeRiskLevelChangeRecord> records = listViewCompliance.Items .OfType <ListViewItem>() .Where(lvi => lvi.Tag != null && lvi.Tag is EventTypeRiskLevelChangeRecord) .Select(lvi => lvi.Tag as EventTypeRiskLevelChangeRecord); foreach (var changeRecord in records) { var r = _smsEventType.ChangeRecords.GetItemById(changeRecord.ItemId); if (r == null || !r.Equals(changeRecord)) { return(true); } } return(false); }
/// <summary> /// Применить к объекту сделанные изменения на контроле. /// Если не все данные удовлетворяют формату ввода (например при вводе чисел), свойства объекта не изменяются, возвращается false /// Вызов base.ApplyChanges() обязателен /// </summary> /// <returns></returns> private void ApplyChanges(CAASmsEventType obj) { obj.Description = textBoxDescription.Text; obj.FullName = textBoxName.Text; obj.EventConditions.Clear(); foreach (var CAAsmsConditionControl in flowLayoutPanelConditions.Controls.OfType <CAASmsConditionControl>()) { CAAsmsConditionControl.ApplyChanges(); obj.EventConditions.Add(CAAsmsConditionControl.EventCondition); } IEnumerable <CAAEventTypeRiskLevelChangeRecord> records = listViewCompliance.Items .OfType <ListViewItem>() .Where(lvi => lvi.Tag != null && lvi.Tag is CAAEventTypeRiskLevelChangeRecord) .Select(lvi => lvi.Tag as CAAEventTypeRiskLevelChangeRecord); obj.ChangeRecords.Clear(); obj.ChangeRecords.AddRange(records); }
///<summary> /// Конструктор по умолчанию ///</summary> public CAASmsEventTypeForm(CAASmsEventType smsEventType) : this() { _smsEventType = smsEventType; SetHeaders(); FillControls(); }