/* * Перегружаемые методы */ #region public override void ApplyChanges() /// <summary> /// Применить к объекту сделанные изменения на контроле. /// Если не все данные удовлетворяют формату ввода (например при вводе чисел), свойства объекта не изменяются, возвращается false /// Вызов base.ApplyChanges() обязателен /// </summary> /// <returns></returns> public override void ApplyChanges() { // Применяем сделанные изменения объектам for (int i = 0; i < flowLayoutPanelMain.Controls.Count; i++) { PowerUnitWorkInRegimeParamsControl c = flowLayoutPanelMain.Controls[i] as PowerUnitWorkInRegimeParamsControl; if (c == null) { continue; } c.ApplyChanges(); if (BaseComponent != null && BaseComponent.ComponentWorkParams != null && !ConditionExists(c.Condition)) { BaseComponent.ComponentWorkParams.Add(c.Condition); } } /* * Все изменения сохранены в коллекции * * Здесь необходимо сохранить внесенные данные * Коллекция является StringConvertibleCollection и не имеет отдельной таблицы в базе данных, * а хранится в качестве поля таблицы AircraftFlights */ if (BaseComponent != null) { BaseComponent.AccelerationGround = dateTimePickerTime.Value.Second; BaseComponent.AccelerationAir = dateTimePickerAccelerationAir.Value.Second; } // base.ApplyChanges(); }
private void OilConditionControlDeleted(object sender, EventArgs e) { PowerUnitWorkInRegimeParamsControl control = (PowerUnitWorkInRegimeParamsControl)sender; ComponentWorkInRegimeParams cond = control.Condition; if (cond.ItemId > 0 && MessageBox.Show("Do you really want to delete detail params?", "Deleting confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { //если информация о состоянии сохранена в БД //и получен положительный ответ на ее удаление try { GlobalObjects.CasEnvironment.Manipulator.Delete(cond); } catch (Exception ex) { Program.Provider.Logger.Log("Error while removing data", ex); } flowLayoutPanelMain.Controls.Remove(control); control.Deleted -= OilConditionControlDeleted; control.RegimeChanged -= RegimeChanged; control.Dispose(); } else if (cond.ItemId <= 0) { flowLayoutPanelMain.Controls.Remove(control); control.Deleted -= OilConditionControlDeleted; control.RegimeChanged -= RegimeChanged; control.Dispose(); } }
private void LinkLabelAddNewLinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { PowerUnitWorkInRegimeParamsControl performance = new PowerUnitWorkInRegimeParamsControl(BaseComponent); performance.Extended = true; performance.Deleted += OilConditionControlDeleted; performance.RegimeChanged += RegimeChanged; if (flowLayoutPanelMain.Controls.Count > 1) { performance.ShowHeaders = false; } flowLayoutPanelMain.Controls.Remove(panelAdd); flowLayoutPanelMain.Controls.Add(performance); flowLayoutPanelMain.Controls.Add(panelAdd); }
/// <summary> /// Проверяет введенные данные. /// Если какое-либо поле не подходит по формату, следует сразу кидать MessageBox, ставить курсор в необходимое поле и возвращать false в качестве результата метода /// </summary> /// <returns></returns> public override bool CheckData() { // Проверяем введенные данные for (int i = 0; i < flowLayoutPanelMain.Controls.Count; i++) { PowerUnitWorkInRegimeParamsControl c = flowLayoutPanelMain.Controls[i] as PowerUnitWorkInRegimeParamsControl; if (c != null) { if (!c.CheckData()) { Visible = true; return(false); } } } // Все данные введены корректно return(true); }
/// <summary> /// Строит нужные контролы /// </summary> private void BuildControls() { if (BaseComponent != null) { dateTimePickerTime.Value = DateTime.Today.AddSeconds(BaseComponent.AccelerationGround); dateTimePickerAccelerationAir.Value = DateTime.Today.AddSeconds(BaseComponent.AccelerationAir); } // Освобождаем старые контролы foreach (Control control in flowLayoutPanelMain.Controls) { if (control is PowerUnitWorkInRegimeParamsControl) { PowerUnitWorkInRegimeParamsControl c = (PowerUnitWorkInRegimeParamsControl)control; c.Deleted -= OilConditionControlDeleted; c.RegimeChanged -= RegimeChanged; } } flowLayoutPanelMain.Controls.Clear(); if (BaseComponent != null && BaseComponent.ComponentWorkParams != null) { for (int i = 0; i < BaseComponent.ComponentWorkParams.Count; i++) { // Добавляем контрол для ввода данных по запускам PowerUnitWorkInRegimeParamsControl c = new PowerUnitWorkInRegimeParamsControl(BaseComponent.ComponentWorkParams[i]); c.Extended = false; c.Deleted += OilConditionControlDeleted; c.RegimeChanged += RegimeChanged; if (i > 0) { c.ShowHeaders = false; } flowLayoutPanelMain.Controls.Add(c); } } flowLayoutPanelMain.Controls.Add(panelAdd); }
void RegimeChanged(object sender, EventArgs e) { PowerUnitWorkInRegimeParamsControl pc = sender as PowerUnitWorkInRegimeParamsControl; if (pc == null || pc.FlightRegime == null) { return; } List <PowerUnitWorkInRegimeParamsControl> pcList = flowLayoutPanelMain.Controls .OfType <PowerUnitWorkInRegimeParamsControl>() .Where(c => c.FlightRegime == pc.FlightRegime) .ToList(); pcList.Remove(pc); foreach (PowerUnitWorkInRegimeParamsControl control in pcList) { control.FlightRegime = pc.FlightRegime; control.Persent = pc.Persent; control.ResourceProvider = pc.ResourceProvider; } }