Beispiel #1
0
        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);
        }