System.Windows.Forms.MonthCalendar.SetDate C# (CSharp) Method

SetDate() public method

public SetDate ( System.DateTime date ) : void
date System.DateTime
return void
        public void SetDate(DateTime date)
        {
            _selectedDate = date;

            for (int i = 0; i < _daysControls.Count; i++)
                _daysControls[i].Dispose();
            _daysControls.Clear();

            var daysShort = DaysShort;
            List<string> daysShortList = new List<string>();
            for (int i = (int)(_firstDayOfWeek); i < 7; i++)
                daysShortList.Add(daysShort[i]);
            for (int i = 0; i < (int)_firstDayOfWeek; i++)
                daysShortList.Add(daysShort[i]);
            daysShort = daysShortList.ToArray();

            var monthStartDayOfWeek = new DateTime(date.Year, date.Month, 1).DayOfWeek;
            DateTime startDate = new DateTime(date.Year, date.Month, 1).AddDays(-(int)monthStartDayOfWeek + (int)_firstDayOfWeek);

            for (int row = 0; row < 7; row++)
            {
                for (int column = 0; column < 7; column++)
                {
                    if (row == 0) // Header.
                    {
                        Label labelDayOfWeek = new Label();
                        labelDayOfWeek.Font = new Font("Arial", 11);
                        labelDayOfWeek.Location = new Point(3 + CellWidth * column, 33);
                        labelDayOfWeek.Size = new Size(CellWidth, 20);
                        labelDayOfWeek.Text = daysShort[column];
                        labelDayOfWeek.TextAlign = ContentAlignment.TopCenter;
                        labelDayOfWeek.Padding = new Padding();
                        Controls.Add(labelDayOfWeek);

                        _daysControls.Add(labelDayOfWeek);
                    }
                    else
                    {
                        var dayColor = date.Month == startDate.Month ? Color.FromArgb(42, 42, 42) : Color.Gray;
                        var dayDate = new DateTime(startDate.Year, startDate.Month, startDate.Day);

                        Button dayButton = new Button();
                        dayButton.ForeColor = dayColor;
                        dayButton.Size = new Size(CellWidth, 15);
                        dayButton.Location = new Point(3 + CellWidth * column, 33 + 15 * row);
                        dayButton.BackColor = Color.Transparent;
                        dayButton.BorderColor = Color.Transparent;
                        dayButton.BorderHoverColor = Color.FromArgb(112, 192, 231);
                        dayButton.Text = startDate.Day.ToString();
                        dayButton.Click += (s, a) =>
                        {
                            Value = dayDate;
                        };
                        Controls.Add(dayButton);

                        if (TodayDate.Year == startDate.Year && TodayDate.Month == startDate.Month && TodayDate.Day == startDate.Day)
                        {
                            dayButton.ForeColor = Color.FromArgb(0, 102, 204);
                            dayButton.BorderColor = dayButton.ForeColor;
                            dayButton.BorderHoverColor = dayButton.BorderColor;
                            dayButton.BackColor = Color.FromArgb(229, 243, 251);
                            dayButton.HoverColor = dayButton.BackColor;
                        }

                        if (Value.Year == dayDate.Year && Value.Month == dayDate.Month && Value.Day == dayDate.Day)
                        {
                            dayButton.BorderColor = Color.FromArgb(38, 160, 218);
                            dayButton.BorderHoverColor = dayButton.BorderColor;
                            dayButton.BackColor = Color.FromArgb(203, 232, 246);
                            dayButton.HoverColor = dayButton.BackColor;
                        }

                        startDate = startDate.AddDays(1);
                        _daysControls.Add(dayButton);
                    }
                }
            }
        }

Usage Example

Example #1
0
        /// <summary>
        /// Установка значения даты/времени в элементе управления 'календарь' и
        /// выполнение функции, связанной с изменением значения даты/времени
        /// </summary>
        /// <param name="dt">Устанавливаемая дата</param>
        /// /// <param name="bInitTableHourRows">Признак перестроения строк представления значений в ~ от новой даты (23, 25 ч)</param>
        private void setDate(DateTime dt, bool bInitTableHourRows)
        {
            mcldrDate.SetDate(dt);

            if (bInitTableHourRows == true)
            {
                initTableHourRows();
            }
            else
            {
                ;
            }
        }
All Usage Examples Of System.Windows.Forms.MonthCalendar::SetDate