2013-10-23 23 views

回答

1

Edper的回答是正確的,它會自動設置datetimepicker一旦獲得焦點就更新分鐘。 但是,當分鐘超過60時,小時部分不會自動轉發或回滾。

您需要處理KeyDown事件。

試試這個(我結合Edper的回答)。

private void Form1_Load(object sender, EventArgs e) 
    { 
     dateTimePicker1.CustomFormat = "h:mm"; 
     dateTimePicker1.MouseWheel += new MouseEventHandler(dateTimePicker1_MouseWheel); 
     dateTimePicker1.KeyDown += new KeyEventHandler(dateTimePicker1_KeyDown); 
     dateTimePicker1.GotFocus += new EventHandler(dateTimePicker1_GotFocus);   
    } 

    void dateTimePicker1_GotFocus(object sender, EventArgs e) 
    { 
     SendKeys.Send("{right}"); 
    } 


    void dateTimePicker1_MouseWheel(object sender, MouseEventArgs e) 
    { 
     if(e.Delta > 0) 
      dateTimePicker1.Value = dateTimePicker1.Value.AddMinutes(1);    
     else 
      dateTimePicker1.Value = dateTimePicker1.Value.AddMinutes(-1);    
    } 

    void dateTimePicker1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyValue == 38) 
     {     
      dateTimePicker1.Value = dateTimePicker1.Value.AddMinutes(1); 
      e.SuppressKeyPress = true; 
     } 
     else if (e.KeyValue == 40) 
     { 
      dateTimePicker1.Value = dateTimePicker1.Value.AddMinutes(-1); 
      e.SuppressKeyPress = true; 
     } 
    } 
+0

正如預期的那樣,當我嘗試使用的GotFocus,它看起來多麼完美的答案 – Zan

+0

像我已經爲時已晚,該時間已經增加了一次,然後將其發送焦點的權利。 – HackWeight

0

你需要定製datetimepicker.create用戶控件用的DateTimePicker和處理keydown事件

1

datetimePicker得到了Focus然後發送鍵,它會自動轉到微小部分的權利。

dateTimePicker1.GotFocus += new EventHandler(dateTimePicker1_GotFocus); 

void dateTimePicker1_GotFocus(object sender, EventArgs e) 
{ 
SendKeys.Send("{right}"); 
}