/// <summary> /// Конструктор - основной (с параметрами) /// </summary> /// <param name="year">Номер года</param> /// <param name="month">Номер месяца</param> /// <param name="day">Номер дня в месяце</param> /// <param name="hour">Номер часа в сутках</param> /// <param name="objLeading">Объект от значений которого зависит значения создаваемого объекта</param> public HDateTimePicker(DateTime dtValue, HDateTimePicker objLeading) : base(12, 1) { _value = new DateTime[] { DateTime.MinValue, dtValue }; m_arSelectIndexChangedHandlers = new EventHandler[(int)INDEX_CONTROL.COUNT] { cbxDay_onSelectedIndexChanged , cbxMonth_onSelectedIndexChanged , cbxYear_onSelectedIndexChanged , cbxHour_onSelectedIndexChanged }; InitializeComponents(); Mode = MODE.UNKNOWN; m_objLeading = objLeading; if (!(m_objLeading == null)) { m_objLeading.ValueChanged += new EventHandler(leading_ValueChanged); m_tsLeading = _value[(int)INDEX_VALUE.CURRENT] - m_objLeading.Value; } else { ; } }
/// <summary> /// Обработчик события - изменения значения в "ведущем" календаре /// </summary> /// <param name="obj">Объект, инициировавший событие</param> /// <param name="ev">Аргумент события</param> private void leading_ValueChanged(object obj, EventArgs ev) { HDateTimePicker objLeading = obj as HDateTimePicker; ComboBox cbxYear = null , cbxMonth = null , cbxDay = null , cbxHour = null; int iDiffYear = -1; //??? учитывать значение в "ведущем" календаре iDiffYear = objLeading.Value.Year - Value.Year; Value = objLeading.Value + m_tsLeading; cbxYear = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox; cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox; cbxDay = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox; cbxHour = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox; cbxYear.SelectedIndexChanged -= cbxYear_onSelectedIndexChanged; cbxMonth.SelectedIndexChanged -= cbxMonth_onSelectedIndexChanged; cbxDay.SelectedIndexChanged -= cbxDay_onSelectedIndexChanged; cbxHour.SelectedIndexChanged -= cbxHour_onSelectedIndexChanged; cbxYear.SelectedIndex += iDiffYear; cbxMonth.SelectedIndex = Value.Month - 1; cbxDay.SelectedIndex = Value.Day - 1; cbxHour.SelectedIndex = Value.Hour - 1; cbxYear.SelectedIndexChanged += new EventHandler(cbxYear_onSelectedIndexChanged); cbxMonth.SelectedIndexChanged += new EventHandler(cbxMonth_onSelectedIndexChanged); cbxDay.SelectedIndexChanged += new EventHandler(cbxDay_onSelectedIndexChanged); cbxHour.SelectedIndexChanged += new EventHandler(cbxHour_onSelectedIndexChanged); ValueChanged(this, EventArgs.Empty); }
/// <summary> /// Обработчик события - изменения значения в "ведущем" календаре /// </summary> /// <param name="obj">Объект, инициировавший событие</param> /// <param name="ev">Аргумент события</param> private void leading_ValueChanged(object obj, EventArgs ev) { HDateTimePicker objLeading = obj as HDateTimePicker; ComboBox cbxYear = null , cbxMonth = null , cbxDay = null , cbxHour = null; int iDiffYear = -1 , cntDayInMonth = -1; INDEX_CONTROL indx = (ev as EventDatePartArgs).m_index; //??? учитывать значение в "ведущем" календаре iDiffYear = objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year; _value[(int)INDEX_VALUE.PREVIOUS] = _value[(int)INDEX_VALUE.CURRENT]; cbxYearMapping(indx); _value[(int)INDEX_VALUE.CURRENT] = objLeading.Value + m_tsLeading; //??? учитывать значение в "ведущем" календаре iDiffYear -= objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year; cbxYear = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox; cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox; cbxDay = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox; cbxHour = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox; cbxYear.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]; cbxMonth.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]; cbxDay.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]; cbxHour.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]; try { cbxYear.SelectedIndex += iDiffYear; cbxMonth.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Month - 1; cntDayInMonth = DateTime.DaysInMonth(_value[(int)INDEX_VALUE.CURRENT].Year, _value[(int)INDEX_VALUE.CURRENT].Month); //if ((ev as EventDatePartArgs).m_index == INDEX_CONTROL.MONTH) cbxDayMapping(cntDayInMonth, false); //else // cbxDay.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Day - 1; cbxHour.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Hour; // == 0 ? _value[(int)INDEX_VALUE.CURRENT].Hour : _value[(int)INDEX_VALUE.CURRENT].Hour - 1; } catch (Exception e) { Logging.Logg().Exception(e, @"HDateTimePicker::leading_ValueChanged (INDEX_CONTROL=" + (ev as EventDatePartArgs).m_index + @") - ...", Logging.INDEX_MESSAGE.NOT_SET); } cbxYear.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]; cbxMonth.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]; cbxDay.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]; cbxHour.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]; ValueChanged(this, EventArgs.Empty); }
///// <summary> ///// Обработчик события - изменение дата/время начала периода ///// </summary> ///// <param name="obj">Составной объект - календарь</param> ///// <param name="ev">Аргумент события</param> //private void hdtpBegin_onValueChanged(object obj, EventArgs ev) //{ // m_dtRange.Set((obj as HDateTimePicker).Value, m_dtRange.End); // DateTimeRangeValue_Changed(this, EventArgs.Empty); //} /// <summary> /// Обработчик события - изменение дата/время окончания периода /// </summary> /// <param name="obj">Составной объект - календарь</param> /// <param name="ev">Аргумент события</param> protected void hdtpEnd_onValueChanged(object obj, EventArgs ev) { HDateTimePicker hdtpEnd = obj as HDateTimePicker; //m_dtRange.Set(hdtpEnd.LeadingValue, hdtpEnd.Value); if (!(DateTimeRangeValue_Changed == null)) { DateTimeRangeValue_Changed(hdtpEnd.LeadingValue, hdtpEnd.Value); } else { ; } }
///// <summary> ///// Обработчик события - изменение дата/время начала периода ///// </summary> ///// <param name="obj">Составной объект - календарь</param> ///// <param name="ev">Аргумент события</param> //private void hdtpBegin_onValueChanged(object obj, EventArgs ev) //{ // m_dtRange.Set((obj as HDateTimePicker).Value, m_dtRange.End); // DateTimeRangeValue_Changed(this, EventArgs.Empty); //} /// <summary> /// Обработчик события - изменение дата/время окончания периода /// </summary> /// <param name="obj">Составной объект - календарь</param> /// <param name="ev">Аргумент события</param> private void hdtpEnd_onValueChanged(object obj, EventArgs ev) { HDateTimePicker hdtpEnd = obj as HDateTimePicker; m_dtRange.Set(hdtpEnd.LeadingValue, hdtpEnd.Value); if (!(DateTimeRangeValue_Changed == null)) { DateTimeRangeValue_Changed(this, EventArgs.Empty); } else { ; } }
public PanelManagementTaskTepCalculate() : base(8, 21) { InitializeComponents(); HDateTimePicker hdtpEnd = Controls.Find(INDEX_CONTROL_BASE.HDTP_END.ToString(), true)[0] as HDateTimePicker; m_dtRange = new DateTimeRange((Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker).Value , hdtpEnd.Value); ////Назначить обработчик события - изменение дата/время начала периода //hdtpBegin.ValueChanged += new EventHandler(hdtpBegin_onValueChanged); //Назначить обработчик события - изменение дата/время окончания периода // при этом отменить обработку события - изменение дата/время начала периода // т.к. при изменении дата/время начала периода изменяется и дата/время окончания периода hdtpEnd.ValueChanged += new EventHandler(hdtpEnd_onValueChanged); }
/// <summary> /// Обработчик события - изменения значения в "ведущем" календаре /// </summary> /// <param name="obj">Объект, инициировавший событие</param> /// <param name="ev">Аргумент события</param> private void leading_ValueChanged(object obj, EventArgs ev) { HDateTimePicker objLeading = obj as HDateTimePicker; ComboBox cbxYear = null , cbxMonth = null , cbxDay = null , cbxHour = null; int iDiffYear = -1; //??? учитывать значение в "ведущем" календаре iDiffYear = objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year; _value[(int)INDEX_VALUE.PREVIOUS] = _value[(int)INDEX_VALUE.CURRENT]; _value[(int)INDEX_VALUE.CURRENT] = objLeading.Value + m_tsLeading; cbxYear = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox; cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox; cbxDay = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox; cbxHour = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox; cbxYear.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]; cbxMonth.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]; cbxDay.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]; cbxHour.SelectedIndexChanged -= m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]; cbxYear.SelectedIndex += iDiffYear; cbxMonth.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Month - 1; cbxDay.Items.Clear(); for (int i = 0; i < DateTime.DaysInMonth(_value[(int)INDEX_VALUE.CURRENT].Year, _value[(int)INDEX_VALUE.CURRENT].Month); i++) { cbxDay.Items.Add(i + 1); } cbxDay.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Day - 1; cbxHour.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Hour; // == 0 ? _value[(int)INDEX_VALUE.CURRENT].Hour : _value[(int)INDEX_VALUE.CURRENT].Hour - 1; cbxYear.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]; cbxMonth.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]; cbxDay.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]; cbxHour.SelectedIndexChanged += m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]; ValueChanged(this, EventArgs.Empty); }
/// <summary> /// Конструктор - основной (с параметрами) /// </summary> /// <param name="year">Номер года</param> /// <param name="month">Номер месяца</param> /// <param name="day">Номер дня в месяце</param> /// <param name="hour">Номер часа в сутках</param> /// <param name="objLeading">Объект от значений которого зависит значения создаваемого объекта</param> public HDateTimePicker(int year, int month, int day, int hour, HDateTimePicker objLeading) : base(12, 1) { Value = new DateTime(year, month, day, hour, 0, 0); InitializeComponents(); Mode = MODE.UNKNOWN; m_objLeading = objLeading; if (!(m_objLeading == null)) { m_objLeading.ValueChanged += new EventHandler(leading_ValueChanged); m_tsLeading = Value - m_objLeading.Value; } else { ; } }
private void InitializeComponents() { Control ctrl = null; DateTime today = DateTime.Today; SuspendLayout(); initializeLayoutStyle(); ctrl = new ComboBox(); ctrl.Name = INDEX_CONTROL_BASE.CBX_PERIOD.ToString(); ctrl.Dock = DockStyle.Bottom; (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList; //??? точное размещенеие в коде целевого класса this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска ctrl = new ComboBox(); ctrl.Name = INDEX_CONTROL_BASE.CBX_TIMEZONE.ToString(); ctrl.Dock = DockStyle.Bottom; (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList; //??? точное (столбец, строка) размещенеие в коде целевого класса this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска (без указания столбца, строки) ctrl = new HDateTimePicker(today.Year, today.Month, today.Day, 0, null); ctrl.Name = INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(); ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right); //??? точное (столбец, строка) размещенеие в коде целевого класса this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска (без указания столбца, строки) ctrl = new HDateTimePicker(today.Year, today.Month, today.Day, 1, Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker); ctrl.Name = INDEX_CONTROL_BASE.HDTP_END.ToString(); ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right); //??? точное (столбец, строка) размещенеие в коде целевого класса this.Controls.Add(ctrl); //??? добавлять для возможности последующего поиска (без указания столбца, строки) ResumeLayout(false); PerformLayout(); }
public void SetPeriod(ID_PERIOD idPeriod) { HDateTimePicker hdtpBegin = Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker , hdtpEnd = Controls.Find(INDEX_CONTROL_BASE.HDTP_END.ToString(), true)[0] as HDateTimePicker; //Выполнить запрос на получение значений для заполнения 'DataGridView' switch (idPeriod) { case ID_PERIOD.HOUR: hdtpBegin.Value = new DateTime(DateTime.Now.Year , DateTime.Now.Month , DateTime.Now.Day , DateTime.Now.Hour , 0 , 0).AddHours(-1); hdtpEnd.Value = hdtpBegin.Value.AddHours(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.HOUR; break; //case ID_PERIOD.SHIFTS: // hdtpBegin.Mode = HDateTimePicker.MODE.HOUR; // hdtpEnd.Mode = HDateTimePicker.MODE.HOUR; // break; case ID_PERIOD.DAY: hdtpBegin.Value = new DateTime(DateTime.Now.Year , DateTime.Now.Month , DateTime.Now.Day , 0 , 0 , 0).AddDays(-1); hdtpEnd.Value = hdtpBegin.Value.AddDays(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.DAY; break; case ID_PERIOD.MONTH: hdtpBegin.Value = new DateTime(DateTime.Now.Year , DateTime.Now.Month , 1 , 0 , 0 , 0).AddMonths(-1); hdtpEnd.Value = hdtpBegin.Value.AddMonths(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.MONTH; break; case ID_PERIOD.YEAR: hdtpBegin.Value = new DateTime(DateTime.Now.Year , 1 , 1 , 0 , 0 , 0).AddYears(-1); hdtpEnd.Value = hdtpBegin.Value.AddYears(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.YEAR; break; default: break; } }
private void setModeDatetimeRange() { ID_PERIOD idPeriod = IdPeriod; HDateTimePicker hdtpBegin = findControl(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString()) as HDateTimePicker , hdtpEnd = findControl(INDEX_CONTROL_BASE.HDTP_END.ToString()) as HDateTimePicker; //Выполнить запрос на получение значений для заполнения 'DataGridView' switch (idPeriod) { case ID_PERIOD.HOUR: hdtpBegin.Value = new DateTime(DateTime.Now.Year , DateTime.Now.Month , DateTime.Now.Day , DateTime.Now.Hour , 0 , 0).AddHours(-1); hdtpEnd.Value = hdtpBegin.Value.AddHours(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.HOUR; break; //case ID_PERIOD.SHIFTS: // hdtpBegin.Mode = HDateTimePicker.MODE.HOUR; // hdtpEnd.Mode = HDateTimePicker.MODE.HOUR; // break; case ID_PERIOD.DAY: hdtpBegin.Value = new DateTime(DateTime.Now.Year , DateTime.Now.Month , DateTime.Now.Day , 0 , 0 , 0).AddDays(-1); hdtpEnd.Value = hdtpBegin.Value.AddDays(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.DAY; break; case ID_PERIOD.MONTH: hdtpBegin.Value = new DateTime(DateTime.Now.Year , DateTime.Now.Month , 1 , 0 , 0 , 0) /*.AddMonths(-1)*/; hdtpEnd.Value = hdtpBegin.Value.AddMonths(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.MONTH; break; case ID_PERIOD.YEAR: hdtpBegin.Value = new DateTime(DateTime.Now.Year , 1 , 1 , 0 , 0 , 0).AddYears(0); hdtpEnd.Value = hdtpBegin.Value.AddYears(1); hdtpBegin.Mode = hdtpEnd.Mode = HDateTimePicker.MODE.YEAR; break; default: break; } }
///// <summary> ///// Обработчик события - изменение дата/время начала периода ///// </summary> ///// <param name="obj">Составной объект - календарь</param> ///// <param name="ev">Аргумент события</param> //private void hdtpBegin_onValueChanged(object obj, EventArgs ev) //{ // m_dtRange.Set((obj as HDateTimePicker).Value, m_dtRange.End); // DateTimeRangeValue_Changed(this, EventArgs.Empty); //} /// <summary> /// Обработчик события - изменение дата/время окончания периода /// </summary> /// <param name="obj">Составной объект - календарь</param> /// <param name="ev">Аргумент события</param> private void hdtpEnd_onValueChanged(object obj, EventArgs ev) { HDateTimePicker hdtpEnd = obj as HDateTimePicker; DateTimeRangeValue_Changed?.Invoke(hdtpEnd.LeadingValue, hdtpEnd.Value); }
/// <summary> /// Инициализация элементов управления объекта (создание, размещение) /// </summary> private void InitializeComponents() { Control ctrl = null; int posRow = -1; SuspendLayout(); initializeLayoutStyle(); //CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; //Базовый период отображения данных //Базовый период отображения данных - Подпись if ((TimeControlPlacement & ModeTimeControlPlacement.Labels) == ModeTimeControlPlacement.Labels) { ctrl = new System.Windows.Forms.Label(); //ctrl.Dock = DockStyle.Bottom; ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Bottom); (ctrl as System.Windows.Forms.Label).Text = @"Период расчета"; this.Controls.Add(ctrl, 0, posRow = posRow + 1); //posRow = posRow + 1 SetColumnSpan(ctrl, this.ColumnCount / 2); } else { ; } //Базовый период отображения данных - Значение ctrl = new ComboBox(); ctrl.Name = INDEX_CONTROL_BASE.CBX_PERIOD.ToString(); ctrl.Dock = DockStyle.Bottom; (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList; //??? точное размещенеие в коде целевого класса this.Controls.Add(ctrl, 0, posRow = posRow + 1); //??? добавлять для возможности последующего поиска SetColumnSpan(ctrl, this.ColumnCount / 2); //Часовой пояс //Часовой пояс - Подпись if ((TimeControlPlacement & ModeTimeControlPlacement.Labels) == ModeTimeControlPlacement.Labels) { posRow = -1; ctrl = new System.Windows.Forms.Label(); //ctrl.Dock = DockStyle.Bottom; ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Bottom); (ctrl as System.Windows.Forms.Label).Text = @"Часовой пояс"; this.Controls.Add(ctrl , (TimeControlPlacement & ModeTimeControlPlacement.Queue) == ModeTimeControlPlacement.Queue ? 0 : ColumnCount / 2 , posRow = posRow + 1); // SetColumnSpan(ctrl, this.ColumnCount / 2); } else { ; } //Часовой пояс - Значение ctrl = new ComboBox(); ctrl.Name = INDEX_CONTROL_BASE.CBX_TIMEZONE.ToString(); ctrl.Dock = DockStyle.Bottom; (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList; //??? точное (столбец, строка) размещенеие в коде целевого класса this.Controls.Add(ctrl , (TimeControlPlacement & ModeTimeControlPlacement.Queue) == ModeTimeControlPlacement.Queue ? 0 : ColumnCount / 2 , posRow = posRow + 1); //??? добавлять для возможности последующего поиска (без указания столбца, строки) SetColumnSpan(ctrl, this.ColumnCount / 2); //Дата/время начала периода расчета //Дата/время начала периода расчета - подпись ctrl = new System.Windows.Forms.Label(); ctrl.Dock = DockStyle.Bottom; (ctrl as System.Windows.Forms.Label).Text = @"Дата/время начала периода расчета"; this.Controls.Add(ctrl, 0, posRow = posRow + 1); //posRow = posRow + 1 SetColumnSpan(ctrl, this.ColumnCount); //Дата/время начала периода расчета - значения ctrl = new HDateTimePicker(s_dtDefault, null); ctrl.Name = INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(); ctrl.Dock = DockStyle.Top; //ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right); //??? точное (столбец, строка) размещенеие в коде целевого класса this.Controls.Add(ctrl, 0, posRow = posRow + 1); //posRow = posRow + 1 //??? добавлять для возможности последующего поиска (без указания столбца, строки) SetColumnSpan(ctrl, this.ColumnCount); //Дата/время окончания периода расчета //Дата/время окончания периода расчета - подпись ctrl = new System.Windows.Forms.Label(); ctrl.Dock = DockStyle.Bottom; (ctrl as System.Windows.Forms.Label).Text = @"Дата/время окончания периода расчета:"; this.Controls.Add(ctrl, 0, posRow = posRow + 1); //posRow = posRow + 1 SetColumnSpan(ctrl, this.ColumnCount); //Дата/время окончания периода расчета - значения ctrl = new HDateTimePicker(s_dtDefault.AddHours(1), Controls.Find(INDEX_CONTROL_BASE.HDTP_BEGIN.ToString(), true)[0] as HDateTimePicker); ctrl.Name = INDEX_CONTROL_BASE.HDTP_END.ToString(); ctrl.Dock = DockStyle.Top; //ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right); //??? точное (столбец, строка) размещенеие в коде целевого класса this.Controls.Add(ctrl, 0, posRow = posRow + 1); //posRow = posRow + 1 //??? добавлять для возможности последующего поиска (без указания столбца, строки) SetColumnSpan(ctrl, this.ColumnCount); SetRowSpan(ctrl, 1); ResumeLayout(false); PerformLayout(); }
/// <summary> /// Обработчик события - изменения значения в "ведущем" календаре /// </summary> /// <param name="obj">Объект, инициировавший событие</param> /// <param name="ev">Аргумент события</param> private void leading_ValueChanged(object obj, EventArgs ev) { HDateTimePicker objLeading = obj as HDateTimePicker; ComboBox cbxYear = null , cbxMonth = null , cbxDay = null , cbxHour = null; int iDiffYear = -1 , cntDayInMonth = -1; INDEX_CONTROL indx = (ev as EventDatePartArgs).m_index; if ((indx == INDEX_CONTROL.MONTH) || (indx == INDEX_CONTROL.YEAR) ) { if (_mode == MODE.MONTH) { m_tsLeading -= (TimeSpan.FromDays(DateTime.DaysInMonth(objLeading._value[(int)INDEX_VALUE.PREVIOUS].Year, objLeading._value[(int)INDEX_VALUE.PREVIOUS].Month)) - TimeSpan.FromDays(1)); m_tsLeading += (TimeSpan.FromDays(DateTime.DaysInMonth(objLeading._value[(int)INDEX_VALUE.CURRENT].Year, objLeading._value[(int)INDEX_VALUE.CURRENT].Month))); m_tsLeading -= TimeSpan.FromDays(1); } else if (_mode == MODE.YEAR) { m_tsLeading = TimeSpan.FromDays(DateTime.IsLeapYear(objLeading._value[(int)INDEX_VALUE.CURRENT].Year) == true ? 366 : 365); } else { ; } //??? только для MONTH //m_tsLeading -= TimeSpan.FromDays(1); } else { ; } //??? учитывать значение в "ведущем" календаре iDiffYear = objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year; _value[(int)INDEX_VALUE.PREVIOUS] = _value[(int)INDEX_VALUE.CURRENT]; _value[(int)INDEX_VALUE.CURRENT] = objLeading.Value + m_tsLeading; //??? учитывать значение в "ведущем" календаре iDiffYear -= objLeading.Value.Year - _value[(int)INDEX_VALUE.CURRENT].Year; cbxYear = Controls.Find(INDEX_CONTROL.YEAR.ToString(), true)[0] as ComboBox; cbxMonth = Controls.Find(INDEX_CONTROL.MONTH.ToString(), true)[0] as ComboBox; cbxDay = Controls.Find(INDEX_CONTROL.DAY.ToString(), true)[0] as ComboBox; cbxHour = Controls.Find(INDEX_CONTROL.HOUR.ToString(), true)[0] as ComboBox; cbxYear.SelectedIndexChanged -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]); cbxMonth.SelectedIndexChanged -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]); cbxDay.SelectedIndexChanged -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]); cbxHour.SelectedIndexChanged -= new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]); try { cbxYear.SelectedIndex += iDiffYear; cbxMonth.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Month - 1; cntDayInMonth = DateTime.DaysInMonth(_value[(int)INDEX_VALUE.CURRENT].Year, _value[(int)INDEX_VALUE.CURRENT].Month); //if ((ev as EventDatePartArgs).m_index == INDEX_CONTROL.MONTH) cbxDayMapping(cntDayInMonth, false); //else // cbxDay.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Day - 1; cbxHour.SelectedIndex = _value[(int)INDEX_VALUE.CURRENT].Hour; // == 0 ? _value[(int)INDEX_VALUE.CURRENT].Hour : _value[(int)INDEX_VALUE.CURRENT].Hour - 1; } catch (Exception e) { Logging.Logg().Exception(e, @"HDateTimePicker::leading_ValueChanged (INDEX_CONTROL=" + (ev as EventDatePartArgs).m_index + @") - ...", Logging.INDEX_MESSAGE.NOT_SET); } cbxYear.SelectedIndexChanged += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.YEAR]); cbxMonth.SelectedIndexChanged += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.MONTH]); cbxDay.SelectedIndexChanged += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.DAY]); cbxHour.SelectedIndexChanged += new EventHandler(m_arSelectIndexChangedHandlers[(int)INDEX_CONTROL.HOUR]); ValueChanged(this, EventArgs.Empty); }
private void InitializeComponents() { Control ctrl = null; int posRow = -1; SuspendLayout(); initializeLayoutStyle(); posRow = 0; //Период расчета ////Период расчета - подпись //ctrl = new System.Windows.Forms.Label(); //ctrl.Dock = DockStyle.Bottom; //(ctrl as System.Windows.Forms.Label).Text = @"Период:"; //this.Controls.Add(ctrl, 0, posRow); //SetColumnSpan(ctrl, 2); SetRowSpan(ctrl, 1); //Период расчета - значение ctrl = new ComboBox(); ctrl.Name = INDEX_CONTROL.CBX_PERIOD.ToString(); ctrl.Dock = DockStyle.Bottom; (ctrl as ComboBox).DropDownStyle = ComboBoxStyle.DropDownList; this.Controls.Add(ctrl, 0, posRow); SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1); //Расчет - выполнить ctrl = new Button(); ctrl.Name = INDEX_CONTROL.BUTTON_RUN.ToString(); ctrl.Text = @"Выполнить"; ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 4, posRow); SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1); //Дата/время начала периода расчета //Дата/время начала периода расчета - подпись ctrl = new System.Windows.Forms.Label(); ctrl.Dock = DockStyle.Bottom; (ctrl as System.Windows.Forms.Label).Text = @"Дата/время начала периода расчета"; this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1); //Дата/время начала периода расчета - значения ctrl = new HDateTimePicker(2015, 1, 1); ctrl.Name = INDEX_CONTROL.HDTP_BEGIN.ToString(); ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right); this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1); //Дата/время окончания периода расчета //Дата/время окончания периода расчета - подпись ctrl = new System.Windows.Forms.Label(); ctrl.Dock = DockStyle.Bottom; (ctrl as System.Windows.Forms.Label).Text = @"Дата/время окончания периода расчета:"; this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1); //Дата/время окончания периода расчета - значения ctrl = new HDateTimePicker(2015, 1, 1, 24); ctrl.Name = INDEX_CONTROL.HDTP_END.ToString(); ctrl.Anchor = (AnchorStyles)(AnchorStyles.Left | AnchorStyles.Right); this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1); //Признаки включения/исключения из расчета //Признаки включения/исключения из расчета - подпись ctrl = new System.Windows.Forms.Label(); ctrl.Dock = DockStyle.Bottom; (ctrl as System.Windows.Forms.Label).Text = @"Включить/исключить из расчета"; this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1); //Признак для включения/исключения из расчета компонента ctrl = new CheckedListBox(); ctrl.Name = INDEX_CONTROL.CLBX_COMP_CALCULATED.ToString(); ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3); //Признак для включения/исключения из расчета параметра ctrl = new CheckedListBox(); ctrl.Name = INDEX_CONTROL.CLBX_PARAMETER_CALCULATED.ToString(); ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 0, posRow = posRow + 3); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3); //Кнопки обновления/сохранения, импорта/экспорта //Кнопка - обновить ctrl = new Button(); ctrl.Name = INDEX_CONTROL.BUTTON_LOAD.ToString(); ctrl.Text = @"Загрузить"; ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 0, posRow = posRow + 3); SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1); //Кнопка - импортировать ctrl = new Button(); ctrl.Name = INDEX_CONTROL.BUTTON_IMPORT.ToString(); ctrl.Text = @"Импорт"; ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 4, posRow); SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1); //Кнопка - сохранить ctrl = new Button(); ctrl.Name = INDEX_CONTROL.BUTTON_SAVE.ToString(); ctrl.Text = @"Сохранить"; ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1); //Кнопка - экспортировать ctrl = new Button(); ctrl.Name = INDEX_CONTROL.BUTTON_EXPORT.ToString(); ctrl.Text = @"Экспорт"; ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 4, posRow); SetColumnSpan(ctrl, 4); SetRowSpan(ctrl, 1); //Признаки включения/исключения для отображения //Признак для включения/исключения для отображения компонента ctrl = new System.Windows.Forms.Label(); ctrl.Dock = DockStyle.Bottom; (ctrl as System.Windows.Forms.Label).Text = @"Включить/исключить для отображения"; this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 1); ctrl = new CheckedListBox(); ctrl.Name = INDEX_CONTROL.CLBX_COMP_VISIBLED.ToString(); ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 0, posRow = posRow + 1); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3); //Признак для включения/исключения для отображения параметра ctrl = new CheckedListBox(); ctrl.Name = INDEX_CONTROL.CLBX_PARAMETER_VISIBLED.ToString(); ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl, 0, posRow = posRow + 3); SetColumnSpan(ctrl, 8); SetRowSpan(ctrl, 3); ResumeLayout(false); PerformLayout(); }