private void InitializeDatePickerControls() { pnlDateTimePickerPanel = new Panel(); lblTimeSpan = new Label(); lblStartDate = new Label(); lblEndDate = new Label(); dtpStart = new DateTimePicker(); dtpEnd = new DateTimePicker(); // // Panel // pnlDateTimePickerPanel.Name = "pnlDateTimePicker"; pnlDateTimePickerPanel.Size = new Size(200, 75); pnlDateTimePickerPanel.BorderStyle = BorderStyle.FixedSingle; // // lblTimeSpan // lblTimeSpan.Name = "lblTimeSpan"; lblTimeSpan.Text = "Simulation Duration"; lblTimeSpan.Size = new Size(150, 20); // // lblStart // lblStartDate.Name = "lblStartDate"; lblStartDate.Text = "Start Date"; lblStartDate.Size = new Size(35, 20); // // lblEnd // lblEndDate.Name = "lblEndDate"; lblEndDate.Text = "End Date"; lblEndDate.Size = new Size(35, 20); // // dtpStart // dtpStart.Name = "dtpStart"; dtpStart.Format = DateTimePickerFormat.Short; dtpStart.Size = new Size(100, 20); dtpStart.Value = Settings.Instance.DefaultSimulationStartDate; dtpStart.ValueChanged += (s, e) => { // Must start on a trading day if (!Calendar.IsTradingDay(dtpStart.Value)) { dtpStart.Value = Calendar.NextTradingDay(dtpStart.Value); } // Make sure the end date is valid based on start date if (dtpEnd.Value <= dtpStart.Value) { dtpEnd.Value = Calendar.NextTradingDay(dtpStart.Value); } }; // // dtpEnd // dtpEnd.Name = "dtpEnd"; dtpEnd.Format = DateTimePickerFormat.Short; dtpEnd.Size = new Size(100, 20); dtpEnd.Value = Calendar.PriorTradingDay(Settings.Instance.DefaultSimulationStartDate.AddMonths(Settings.Instance.DefaultSimulationLengthMonths)); dtpEnd.MaxDate = Calendar.PriorTradingDay(DateTime.Today); dtpEnd.ValueChanged += (s, e) => { if (dtpEnd.Value <= dtpStart.Value) { dtpEnd.Value = Calendar.NextTradingDay(dtpStart.Value); } }; // // btnAddYear // btnAddYear = new Button() { Text = "==>", Size = new Size(50, 20) }; btnAddYear.Click += (s, e) => { DateTime newEnd = dtpEnd.Value.AddYears(1); dtpEnd.Value = newEnd > dtpEnd.MaxDate ? dtpEnd.MaxDate : newEnd; if (!Calendar.IsTradingDay(dtpEnd.Value)) { dtpEnd.Value = Calendar.PriorTradingDay(dtpEnd.Value); } dtpStart.Value = dtpEnd.Value.AddYears(-1); if (!Calendar.IsTradingDay(dtpStart.Value)) { dtpStart.Value = Calendar.PriorTradingDay(dtpStart.Value); } }; // // btnSubtractYear // btnSubtractYear = new Button() { Text = "<==", Size = new Size(50, 20) }; btnSubtractYear.Click += (s, e) => { DateTime newEnd = dtpEnd.Value.AddYears(-1); dtpEnd.Value = newEnd; if (!Calendar.IsTradingDay(dtpEnd.Value)) { dtpEnd.Value = Calendar.PriorTradingDay(dtpEnd.Value); } dtpStart.Value = dtpEnd.Value.AddYears(-1); if (!Calendar.IsTradingDay(dtpStart.Value)) { dtpStart.Value = Calendar.PriorTradingDay(dtpStart.Value); } }; // // Add and Arrange // pnlDateTimePickerPanel.Controls.AddRange(new Control[] { lblTimeSpan, lblStartDate, lblEndDate, dtpStart, dtpEnd, btnAddYear, btnSubtractYear }); lblTimeSpan.Location = new Point(4, 4); lblStartDate.DockTo(lblTimeSpan, ControlEdge.Bottom, 2); lblEndDate.DockTo(lblStartDate, ControlEdge.Bottom, 2); dtpStart.DockTo(lblStartDate, ControlEdge.Right, 2); dtpEnd.DockTo(lblEndDate, ControlEdge.Right, 2); btnAddYear.DockTo(dtpStart, ControlEdge.Right, 2); btnSubtractYear.DockTo(dtpEnd, ControlEdge.Right, 2); pnlLeft.Controls.Add(pnlDateTimePickerPanel); pnlDateTimePickerPanel.DockTo(pnlNewSimControls, ControlEdge.Right, 5); }