/* * Реализация */ #region private void BuildControls() /// <summary> /// Строит нужные контролы /// </summary> private void BuildControls() { // Освобождаем старые контролы flowLayoutPanel1.Controls.Clear(); int count = 5; if (Flight != null && Flight.OilConditionCollection != null && Flight.OilConditionCollection.Count > count) { count = Flight.OilConditionCollection.Count; } for (int i = 0; i < count; i++) { // Добавляем контрол для ввода данных по маслу ComponentOilControl c = new ComponentOilControl(); if (Flight != null && Flight.OilConditionCollection != null && i < Flight.OilConditionCollection.Count) { c.OilCondition = Flight.OilConditionCollection[i]; } else if (Flight != null) { ComponentOilCondition condition = new ComponentOilCondition(); c.OilCondition = condition; } // this.flowLayoutPanel1.Controls.Add(c); } }
/* * Перегружаемые методы */ #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++) { ComponentOilControl c = flowLayoutPanelMain.Controls[i] as ComponentOilControl; if (c == null) { continue; } c.ApplyChanges(); if (Flight != null && Flight.OilConditionCollection != null && !ConditionExists(c.OilCondition)) { Flight.OilConditionCollection.Add(c.OilCondition); } } /* * Все изменения сохранены в коллекции * * Здесь необходимо сохранить внесенные данные * Коллекция является StringConvertibleCollection и не имеет отдельной таблицы в базе данных, * а хранится в качестве поля таблицы AircraftFlights */ // base.ApplyChanges(); }
private void ItemFlowChanget(object sender, EventArgs e) { ComponentOilControl coc = sender as ComponentOilControl; if (coc == null) { return; } InvokeOilFlowChanget(coc.PowerUnit, coc.Flow); }
private void OilConditionControlDeleted(object sender, EventArgs e) { ComponentOilControl control = (ComponentOilControl)sender; ComponentOilCondition cond = control.OilCondition; if (cond.ItemId > 0 && MessageBox.Show("Do you really want to delete oil condition?", "Deleting confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { //если информация о состоянии сохранена в БД //и получен положительный ответ на ее удаление try { GlobalObjects.NewKeeper.Delete(cond); } catch (Exception ex) { Program.Provider.Logger.Log("Error while removing data", ex); } flowLayoutPanelMain.Controls.Remove(control); control.Deleted -= OilConditionControlDeleted; control.AfterRemainChanget -= ItemAfterRemainChanget; control.RefuelChanget -= ItemRefuelChanget; control.OnBoardChanget -= ItemOnBoardChanget; control.SpentChanget -= ItemSpentChanget; control.BeforeRemainChanget -= ItemBeforeRemainChanget; control.ComponentChanget -= ItemComponentChanget; control.OilFlowChanget -= ItemFlowChanget; SetOilFlow(control.PowerUnit); control.Dispose(); } else if (cond.ItemId <= 0) { flowLayoutPanelMain.Controls.Remove(control); control.Deleted -= OilConditionControlDeleted; control.AfterRemainChanget -= ItemAfterRemainChanget; control.RefuelChanget -= ItemRefuelChanget; control.OnBoardChanget -= ItemOnBoardChanget; control.SpentChanget -= ItemSpentChanget; control.BeforeRemainChanget -= ItemBeforeRemainChanget; control.ComponentChanget -= ItemComponentChanget; control.OilFlowChanget -= ItemFlowChanget; SetOilFlow(control.PowerUnit); control.Dispose(); } GetTotalBefore(); GetTotalRefuel(); GetTotalOnBoard(); GetTotalSpent(); GetTotalAfter(); }
/// <summary> /// Проверяет введенные данные. /// Если какое-либо поле не подходит по формату, следует сразу кидать MessageBox, ставить курсор в необходимое поле и возвращать false в качестве результата метода /// </summary> /// <returns></returns> public override bool CheckData() { // Проверяем введенные данные for (int i = 0; i < flowLayoutPanelMain.Controls.Count; i++) { ComponentOilControl c = flowLayoutPanelMain.Controls[i] as ComponentOilControl; if (c != null) { if (!c.CheckData()) { return(false); } } } // Все данные введены корректно return(true); }
/* * Реализация */ #region private void BuildControls() /// <summary> /// Строит нужные контролы /// </summary> private void BuildControls() { // Освобождаем старые контролы flowLayoutPanelMain.Controls.Clear(); if (Flight != null && Flight.OilConditionCollection != null) { var aircraft = GlobalObjects.AircraftsCore.GetAircraftById(Flight.AircraftId); for (int i = 0; i < Flight.OilConditionCollection.Count; i++) { // Добавляем контрол для ввода данных по маслу ComponentOilControl c = new ComponentOilControl(aircraft, Flight.OilConditionCollection[i]); c.Deleted += OilConditionControlDeleted; c.AfterRemainChanget += ItemAfterRemainChanget; c.RefuelChanget += ItemRefuelChanget; c.OnBoardChanget += ItemOnBoardChanget; c.SpentChanget += ItemSpentChanget; c.BeforeRemainChanget += ItemBeforeRemainChanget; c.ComponentChanget += ItemComponentChanget; c.OilFlowChanget += ItemFlowChanget; if (i > 0) { c.ShowHeaders = false; } flowLayoutPanelMain.Controls.Add(c); SetOilFlow(c.PowerUnit); } GetTotalBefore(); GetTotalRefuel(); GetTotalOnBoard(); GetTotalSpent(); GetTotalAfter(); } flowLayoutPanelMain.Controls.Add(panelAdd); }
private void LinkLabelAddNewLinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { var aircraft = GlobalObjects.AircraftsCore.GetAircraftById(Flight.AircraftId); ComponentOilControl performance = new ComponentOilControl(aircraft, new ComponentOilCondition()); performance.Deleted += OilConditionControlDeleted; performance.AfterRemainChanget += ItemAfterRemainChanget; performance.RefuelChanget += ItemRefuelChanget; performance.OnBoardChanget += ItemOnBoardChanget; performance.SpentChanget += ItemSpentChanget; performance.BeforeRemainChanget += ItemBeforeRemainChanget; performance.ComponentChanget += ItemComponentChanget; performance.OilFlowChanget += ItemFlowChanget; if (flowLayoutPanelMain.Controls.Count > 1) { performance.ShowHeaders = false; } flowLayoutPanelMain.Controls.Remove(panelAdd); flowLayoutPanelMain.Controls.Add(performance); flowLayoutPanelMain.Controls.Add(panelAdd); SetOilFlow(performance.PowerUnit); }