2012-01-24 2 views
4

Есть ли в любом случае я могу выбрать несколько дат в Date Time Picker в Vb.net?Выбор нескольких дат в DateTimePicker в vb.net?

+0

Что вы на самом деле пытаетесь сделать? PLS объяснить сценарий. BTW Невозможно выбрать две даты за раз. – Harsh

+0

Я пытаюсь получить набор дат и хочу использовать его для получения зарплаты для сотрудников. Я нашел элемент управления MonthCalendar, который кажется идеальным для этой цели, но я не могу найти вариант (метод, свойство), чтобы получить selectedDates, а затем использовать их. Любые комментарии по этому поводу? – raziiq

ответ

2

Выбор нескольких дат в DateTimePicker в vb.net?

Если вы хотите, чтобы выбрать диапазон дат, используя DateTimePicker, то лучший способ, если возможно два DateTimePicker управляет от даты и до настоящего времени.

Вы можете изменить дату противоположного контроля, когда первая дата выбран, чтобы убедиться, что FromDate находится перед Todate и наоборот

Я нашел контроль MonthCalendar который, кажется, идеально подходит для этой цели но я не могу найти вариант (метод, свойство), чтобы получить selectedDates, а затем использовать их.

Если вы хотите использовать MonthCalendar управления можно указать MaximumSelectionCount свойство, а затем пользователь может выбрать дату, нажав на одну и смещаться щелчок на другую дату

Вы можете восстановить даты, выбранные пользователем с помощью SelectionRange или SelectionStart и SelectionEnd свойства

Как насчет если я хочу, чтобы выбрать случайные даты, такие как 4, 6, 10 февраля

Это сложнее. Предложение - вы можете использовать массив BoldedDatesMonthCalendar, и когда пользователь нажимает на день, вы выделяете его жирным шрифтом. Затем вы можете прочитать массив после того, как они закончили свой выбор? Может быть, у кого-то есть предложение?

+0

Как насчет того, хочу ли я выбрать случайные даты, например, 4, 6, 10 февраля. Как SelectionRange.Start и SelectionRange.End дадут начальную и конечную дату, а не выбранные даты. Кроме того, в MonthCalendar вы можете выбрать одновременные даты, а не случайный выбор. – raziiq

3

Использование объекта BoldedDates в календаре месяца, чтобы получить массив объектов DateTime. Вы можете использовать это, чтобы получить свою коллекцию и, наконец, очистить жирные даты после их хранения, чтобы их можно было повторно использовать.

+0

Спасибо за предложение. Как я могу использовать его? Я имею в виду, что хочу нажимать дату, чтобы она была выделена жирным шрифтом, а затем после того, как все нужные даты выбраны, я хочу добавить их в массив BoldedDates, нажав кнопку. Я хочу показать выбор пользователю, а также в MonthCalendar, чтобы он знал даты, которые он выбирает. – raziiq

0

Нет никакого способа сделать это внутри существующего элемента управления DateTimePicker.

Лучшее альтернативное решение будет зависеть от конкретной ситуации. Каков контекст? Если вы ожидаете, что пользователь будет выбирать даты, близкие друг к другу (и диапазон не слишком велик), достаточно простое решение - использовать другой элемент управления, который позволит использовать мультиселекцию в списке.

Например, CheckedListBox или DataGridView.

Затем заполните его списком дат. Фактически, предлагая пользователю подборку дат.

2
Private listDates As List(Of DateTime) 
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    'Suppose that you have the following list of dates below 
    listDates = New List(Of DateTime)() 
    listDates.Add(DateTime.Now) 
    listDates.Add("12/22/2012") 
    listDates.Add(DateTime.Now.AddDays(-10)) 
End Sub 
Protected Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender 
    'Set Default properties 
    e.Day.IsSelectable = False 
    e.Cell.BackColor = System.Drawing.Color.Gray 
    'Now loop through the list of dates and make it 
    'Selectable 
    For Each d As DateTime In listDates 
     Calendar1.SelectedDates.Add(d) 
     If e.Day.IsSelected Then 
      e.Cell.BackColor = System.Drawing.Color.Green 
      e.Day.IsSelectable = True 
     End If 
    Next 
End Sub 

Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As EventArgs) Handles Calendar1.SelectionChanged 
    'Print the selected date 
    Response.Write("You have selected: " & Calendar1.SelectedDate.ToShortDateString()) 
End Sub 

Я нашел его и попробовал. он работает, оригинальный источник от here

Смежные вопросы