2013-01-18 46 views
-1

事件如何捕捉点击事件,当用户点击的DateTimePicker“转到今天”按钮?捕捉“转至今天”点击的DateTimePicker

谢谢。

+0

说真的,你为什么需要这个?我想你可以处理'Changed'事件并检查日期是否设置为今天。 –

+0

你工作的平台是什么?它是winforms,WPF,ASP.Net或其他东西? –

+0

当用户点击“Go to today”按钮时,Win7和WinXP似乎有不同的行为。在Win7上,点击按钮后,日历窗口没有关闭。在WinXP上,它会自动关闭日历窗口。所以,当按下“Go to today”按钮时,我需要捕获点击事件。 – user1989122

回答

0

只要处理ValueChanged事件DateTimePicker控制并检查选定的日期是否为今天的日期。像这样 -

// ValueChanged Event 
    private void dateTimePicker1_ValueChanged(object sender, EventArgs e) 
    { 
     if (dateTimePicker1.Value.Date == DateTime.Now.Date) 
     { 
      MessageBox.Show("Hola !!"); 
     } 
    } 
+0

那么,我怎么知道它实际上是“转到今天”还是只点击了日历上的当前日期呢? – user1989122

0

我使用win xp和.net 3.5。你可以使用鼠标向下的事件,如果你点击控件本身和“今日”,它会被触发,但如果你在“今日”以外的地方点击了下拉的日历,它将被触发。避免事件被激发,当我点击控制本身,我使用返回语句。 仅当您单击“今天”时,此事件才会设置实际时间。 不幸的是,在win8中,mousedown事件没有被解雇......

private void dateTimePicker2_MouseDown(object sender, MouseEventArgs e) 
    { 
     Point pt = dateTimePicker2.Location; 
     Point mouse_pt = dateTimePicker2.Parent.PointToClient(Cursor.Position); 
     int diff_x = mouse_pt.X - pt.X; 
     int diff_y = mouse_pt.Y - pt.Y; 
     if (diff_y < dateTimePicker2.Size.Height || diff_x > dateTimePicker2.Size.Width) 
      return; 
     DateTime tim_cal = dateTimePicker2.Value; 
     DateTime now = DateTime.Now; 
     TimeSpan ts = new TimeSpan(now.Hour, now.Minute, now.Second); 
     tim_cal = tim_cal.Date + ts; 
     dateTimePicker2.Value = tim_cal; 
    }