我有一個C#Windows窗體控件,它的DateTimePicker設置爲只顯示時間(自定義格式h:mm),我的用戶幾乎總是點擊向上/向下按鈕來控制分鐘。但是,默認情況下控件會更新小時。如何在C#Windows窗體DateTimePicker中將上/下控件控制爲僅分鐘?
如何讓這些按鈕默認控制分鐘數?
作爲獎勵,當分鐘超過60分鐘時,是否可以使小時前進/後退?
我有一個C#Windows窗體控件,它的DateTimePicker設置爲只顯示時間(自定義格式h:mm),我的用戶幾乎總是點擊向上/向下按鈕來控制分鐘。但是,默認情況下控件會更新小時。如何在C#Windows窗體DateTimePicker中將上/下控件控制爲僅分鐘?
如何讓這些按鈕默認控制分鐘數?
作爲獎勵,當分鐘超過60分鐘時,是否可以使小時前進/後退?
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;
}
}
你需要定製datetimepicker.create用戶控件用的DateTimePicker和處理keydown事件
當datetimePicker
得到了Focus
然後發送鍵,它會自動轉到微小部分的權利。
dateTimePicker1.GotFocus += new EventHandler(dateTimePicker1_GotFocus);
void dateTimePicker1_GotFocus(object sender, EventArgs e)
{
SendKeys.Send("{right}");
}
正如預期的那樣,當我嘗試使用的GotFocus,它看起來多麼完美的答案 – Zan
像我已經爲時已晚,該時間已經增加了一次,然後將其發送焦點的權利。 – HackWeight