2013-12-16 6 views
1

저는 C#의 WindowsForm 응용 프로그램에서 DateTime Picker를 사용하고 있습니다. 내 dateTImePicker를 DateTime.Min 값으로 초기화합니다. 내가 원하는 것은 사용자가 그 드롭 다운을 클릭했을 때 그 값을 DateTime.Now Value로 변경하고 Calendar에 현재 값을 표시해야하지만 먼저 열어야 만하고 닫은 다음 다시 열어 달력에 필요한 날짜를 가져와야합니다. 클릭 한 번으로 어떻게 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.DateTimePicker 클릭하여 값 변경 Windows Form 응용 프로그램 C#

지금까지 나는이 이벤트를 시도 :

private void GroupEndingDate_MouseUp(object sender, MouseEventArgs e) 
     { 
      GroupEndingDate.Value = DateTime.Now; 
     } 

     private void GroupStartingDate_MouseDown(object sender, MouseEventArgs e) 
     { 
      GroupStartingDate.Value = DateTime.Now; 
     } 

     private void GroupStartingDate_DropDown(object sender, EventArgs e) 
     { 
      GroupStartingDate.Value = DateTime.Now; 
     } 
+1

DateTime Picker를 'DateTime.Now'로 초기화하는 것이 더 낫습니다 – jp2code

답변

1

은 드롭 이벤트에서 이것을 시도하십시오. 이것은 나를 위해 일했다.

private void Form1_Load(object sender, EventArgs e) 
{ 
    dateTimePicker1.Value = DateTime.Now.AddDays(-3); 
} 

private void dateTimePicker1_DropDown(object sender, EventArgs e) 
{ 
    dateTimePicker1.Value = DateTime.Now; 
} 
+0

어느 달의 1 일에도 여전히 두 번 클릭해야합니다. – user2137186

+0

죄송합니다 .. 문제를 재현 할 수 없습니다. 나는 시도했다 dateTimePicker1.Value = DateTime.Now.AddDays (-15); // 오늘 날짜가 주어집니다. 그것은 잘 작동합니다. 깨끗한 임시 프로젝트에서 사용해보십시오. 나는 다른 곳에서 펑키 한 일을하는 야생 코드를 가지고 있다고 생각합니다. – misfitgeek

+0

OP의 문제도 있습니다. 'DropDown' 이벤트에'dateTimePicker'의'Value'를 설정해도 정확한 날짜가 표시되지 않습니다. 'Form1_Load'에서 초기화하지 말고'DropDown'에서'DateTime.Now.AddDays (3)'로 설정하면 동작하지 않습니다. –

0

다음은 정상적으로 두 번째로 컨트롤을 클릭하지 않아도됩니다.

private void dateTimePicker1_DropDown(object sender, EventArgs e) 
{ 
    dateTimePicker1.Value = DateTime.Now; 
} 

하지만이 접근 방식은 나에게 조금 이상하다고 생각합니다. 날짜는 컨트롤이 열릴 때마다 설정됩니다. 왜 폼의 Load 이벤트에서 DateTime.Now으로 초기화하지 않는 것이 좋을까요?

관련 문제