Похоже, что вы хотите сделать, это установить свойства Calendar.SelectedDate
и Calendar.VisibleDate
.
Я точно не знаю, для чего вы собираетесь, так как я не знаю, какой тип контроля пользователь выберет для вас даты 1 января / 1 января, или какое отношение это имеет к 3-му воскресению. Есть только один календарь? Пожалуйста, объясните немного больше, если информация ниже не поможет вам.
Я вставлю код VB из одного из моих приложений, надеюсь, он вам поможет.
Protected Sub calArrival_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles calArrival.SelectionChanged
SetFormDepartureEntry()
lblArrivalDate.Text = calArrival.SelectedDate.ToLongDateString
calDeparture.SelectedDate = calArrival.SelectedDate
calDeparture.VisibleDate = calArrival.SelectedDate
dtSelectedArrival = "1/1/2000"
'Determine if we need to see 2 months to view all possible departure dates.
If (DatePart(DateInterval.Month, calDeparture.SelectedDate) <> _
DatePart(DateInterval.Month, DateAdd(DateInterval.Day, 14, calDeparture.SelectedDate))) Then
calDeparture2.Visible = True
calDeparture2.SelectedDate = Nothing
calDeparture2.VisibleDate = DateAdd(DateInterval.Month, 1, calDeparture.SelectedDate)
Else
calDeparture2.Visible = False
End If
End Sub
Хорошо, теперь, когда вы опубликовали детали, это становится другим вопросом. Вы не знаете, сколько календарей вам нужно, поэтому вы, вероятно, захотите создать их в коде. Я бы предложил использовать элемент управления Panel в вашей разметке, чтобы содержать все возможные календари результатов. Затем, как вы предложили ранее, создайте новые объекты Календаря по мере необходимости и добавьте их в коллекцию элементов управления «якорной» панели.
Calendar objCal = new Calendar();
pnlResultsContainer.Controls.Add(objCal);
Что касается установки выбранных дней, вы можете иметь только один "выбранный" день для календаря, как мне кажется. Однако вы можете установить стили рендеринга, а также включить ли день и т. Д., Обработав событие Calendar.DayRender. Может быть, кто-то может помочь мне настроить обработчик для динамически создаваемых элементов управления в C #? Я думаю, что-то вроде:
objCal.DayRender += AddressOf(DynamicDayRenderHandler());
Пожалуйста, исправьте, если это не так.
Определение правильного дня для установки стилей в обработчике будет зависеть от кода объекта DayRenderEventArgs.Day, который является параметром события. Я не знаю, как найти определенные дни / интервалы, которые вы ищете, но это должно быть возможно с небольшим исследованием в следующих статьях:
Как: настроить отдельные дни в элементе управления веб-сервером календаря
DayRenderEventArgs.Day Property
Надеюсь, это поможет.