2011-10-24 36 views
0

我該如何做到這一點,如果你選擇一個DateTimePicker時按下一個數字,它不會修改該值?在DateTimePicker中禁用數字按鈕?

目前,我有一個onKeyDown來捕獲所有數字,並設置e.Handled = true,但是這似乎並沒有覆蓋它。

謝謝!

+0

出於興趣,你爲什麼要這樣做?對於那些寧願使用鍵盤而不是鼠標的人,你有什麼想法? –

+0

DateTimePicker具有由箭頭按鈕控制的日期更改功能,所以它仍然有一些鍵盤控制。雖然我確實同意你最好保留號碼功能,但這純粹是來自更高層的請求。 – sooprise

回答

1

嘗試重寫事件的OnKeyPress改爲:

protected override void OnKeyPress(KeyPressEventArgs e) { 
    e.Handled = true; 
    base.OnKeyPress(e); 
} 

,或者只是使用當前的DateTimePicker而無需創建自己的控件:

private void dateTimePicker1_KeyPress(object sender, KeyPressEventArgs e) { 
    e.Handled = true; 
} 

箭頭鍵應該仍然工作。

+0

由於某些原因,甚至在我的DateTimePicker_KeyPress中放入一些代碼時,實際上按下某個鍵時,代碼永遠不會到達。有什麼想法嗎? – sooprise

+0

@sooprise這聽起來像你可能重寫'OnKeyPress'方法,而不是通過'base.OnKeyPress(e)'?否則,不,我不確定你在做什麼。我的小例子在一個新的表單上工作。按箭頭鍵工作,按數字和字母沒有改變日期。 – LarsTech

+0

啊,我是一個小菜鳥,我不明白你的帖子裏發生了什麼。感謝您的額外解釋! :) – sooprise