2009-11-15 13 views
4

저는 C# 부서의 주문을 "예약"하는 데 도움이되는 프로그램을 만들고 있습니다. 다른 달에 여러 날짜를 선택할 수 있어야합니다.C# 및 월 일정, 여러 날짜 선택

날짜를 클릭 한 다음 다른 하나를 클릭하여 그 둘 사이의 모든 날짜를 선택하고 클릭을 제어하여 단일 선택/선택 취소 할 수 있도록하는 것이 좋습니다. 그들은 이전 달 동안 클릭 한 모든 날짜를 유지하면서 몇 개월 사이에 이동할 수 있어야합니다. 이렇게하면 더 쉽게 선택할 수있는 날짜를 대략적으로 볼 수 있습니다.

가장 좋은 방법은 무엇입니까? Visual Studio의 기본 월 달력을 사용해야합니까 아니면 더 유연한 달력이 있어야합니까?

+0

Windows에서 실행되며 웹 폼은 실행되지 않습니다. – Napoli

+0

Napoli, 'Windows'는 여전히 WinForms 또는 WPF 일 수 있습니다. 둘 중 하나는 '스튜디오'보다 훨씬 유용한 태그입니다. –

답변

0

당신은 WPF가 ...

난 당신이 간단한 목록 상자를 생성하고 일정의 SelectedDates 속성에 ItemsSource 속성을 바인딩하는 것이 좋습니다 것 사용하고 있다고 가정. 사용자가 캘린더에서 일을 선택하거나 선택 취소하면 목록에 추가되거나 목록에서 삭제됩니다.

또한, DateSpan 클래스와 ValueConverter를 만들어 일련의 날짜를 DateSpan 클래스로 그룹화 할 수 있습니다. 그런 다음 사용자가 Shift-Select를 사용할 때 날짜 묶음이 아닌 여러 날짜 범위를 볼 수 있도록 SelectedDates 속성에 변환기를 적용 할 수 있습니다 (나쁜 것으로 가정). 논리가 너무 복잡하지는 않습니다.

많은 타사 도구가 있지만 핵심 문제를 사용하는 컨트롤이 남아 있어도 사용자가 선택한 모든 항목을 인식하고 모든 단일 항목을 표시하지 않으려는 경우 선택한 날짜가 동시에 포함 된 월. 제가 생각할 수있는 가장 좋은 대답은 목록 일 것입니다.

+0

.NET 3.5 용 WPF Toolkit을 사용하고 있지만 Calendar의 SelectionMode 속성을 여러 범위를 선택할 수있는 "MultipleRange"로 설정할 수 있습니다. DisplayDateStart 및 DisplayDateEnd 속성을 사용하면 선택할 수있는 날짜 범위를 설정할 수 있습니다 (예 : DisplayDateStart를 1/1/2010으로 설정하면 사용자가 2010 년 1 월 1 일 이전에 날짜를 선택할 수 없음) – JDB

+0

흥미 롭 ... 내 monthCalendar 객체에 대한 "SelectionMode"속성이 없습니다. – Napoli

2

WinForms MonthCalendar는 시작부터 끝까지 범위 선택을 지원하지만 Ctrl을 사용하여 개별 날짜를 선택하지는 않습니다. 따라서 귀하의 요구 사항을 충족시키지 못하는 것 같습니다.

잠깐 만요 : MonthCalendar의 크기를 조정하면 더 많은 달이 표시됩니다. 함께 nobugz '대답은 당신에게 일하는 해결책을 줄지도 모릅니다.

8

날짜에 대한 클릭을 감지 한 다음 굵게 표시된 날짜에서 클릭 한 날짜를 추가하거나 제거하여 작동하게 만들 수 있습니다. MonthCalendar의 MouseDown 이벤트를 구현하십시오.

private void monthCalendar1_MouseDown(object sender, MouseEventArgs e) { 
    MonthCalendar.HitTestInfo info = monthCalendar1.HitTest(e.Location); 
    if (info.HitArea == MonthCalendar.HitArea.Date) { 
    if (monthCalendar1.BoldedDates.Contains(info.Time)) 
     monthCalendar1.RemoveBoldedDate(info.Time); 
    else 
     monthCalendar1.AddBoldedDate(info.Time); 
    monthCalendar1.UpdateBoldedDates(); 
    } 
} 

저렴한 문제가있는 모텔처럼 깜박입니다. 그것에 대한 수정 없음.

관련 문제