2013-01-18 45 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; 
    }