MonthCalendar - Отключить дни

Я делаю приложение на C# в Visual Studio и использую Windows Forms. Мне нужно, чтобы пользователь мог выбрать дату из определенного диапазона (для этого я использую MinDate и MaxDate) и только некоторые дни недели. Например, я хочу отключить понедельники. Я использую MonthCalendar, но я не нашел способа отключить дни недели... Возможно ли это?


person mar_sanbas    schedule 06.10.2013    source источник


Ответы (2)


Вы не можете запретить пользователю выбирать дату в календаре. Не проблема, однако, пожаловаться и предложить лучший выбор:

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e) {
    if (e.Start.DayOfWeek == DayOfWeek.Monday) {
        MessageBox.Show("I hate mondays");
        monthCalendar1.SelectionStart = e.Start.AddDays(1);
    }
}

Используйте свойство BoldedDates, чтобы сделать правильный выбор более очевидным.

person Hans Passant    schedule 06.10.2013
comment
+1. И поскольку нет визуальных подсказок, вы не можете выбрать эту дату в пользовательском интерфейсе элемента управления, рассмотрите всплывающую подсказку и настройку полужирного шрифта, фона и т. д. - person radarbob; 07.10.2013

Короткий ответ: нет. Вы можете добавить событие проверки, которое будет проверять, какой день недели был выбран.

Встроенные элементы управления предлагают не так уж много опций из коробки. Чтобы отключить определенные дни недели, вам нужно будет написать свой собственный элемент управления.

Как только вы начнете писать свой пользовательский элемент управления и застрянете, вы можете опубликовать свой код и вопрос здесь, и люди помогут.

person Black Frog    schedule 06.10.2013