C# 在DateTimePicker中禁用数字按下?

C# 在DateTimePicker中禁用数字按下?,c#,winforms,datetimepicker,C#,Winforms,Datetimepicker,如果您在选择DateTimePicker时按一个数字,它将不会修改该值,我该如何使其如此 目前,我有一个onKeyDown来捕获所有数字,并设置e.Handled=true,但这似乎仍然没有覆盖它 谢谢 请尝试替代OnKeyPress事件: protected override void OnKeyPress(KeyPressEventArgs e) { e.Handled = true; base.OnKeyPress(e); } 或者,如果只使用当前的DateTimePicker而

如果您在选择DateTimePicker时按一个数字,它将不会修改该值,我该如何使其如此

目前,我有一个onKeyDown来捕获所有数字,并设置e.Handled=true,但这似乎仍然没有覆盖它


谢谢

请尝试替代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;
}

箭头键应该仍然有效。

出于兴趣,为什么要这样做?对于那些宁愿使用键盘而不愿使用鼠标的人,你有什么反对意见?DateTimePicker有一些日期更改功能,这些功能由箭头键控制,因此它仍然有一些键盘控制。虽然我同意你的观点,最好保留数字功能,但这纯粹是上级的请求。出于某种原因,当我在DateTimePicker\u键盘上输入一些代码时,当我实际按下一个键时,代码永远无法到达。有什么想法吗?@souprise听起来好像您正在重写
OnKeyPress
方法,而没有传递
base.OnKeyPress(e)
?否则,不,我不知道你在做什么。我的小例子制作了一个新的表格。按箭头键有效,按数字和字母并没有改变日期。啊,我真是个笨蛋,我不明白你的帖子里发生了什么。谢谢你的额外解释!:)最后一件事,这个覆盖通常是针对OnKeyPress的,所以这会影响任何我有OnKeyPress事件的控件?@sooprise OnKeyPress是针对自定义控件的,在自定义控件中,您基于从现有DateTimePicker控件继承创建了一个新的DateTimePicker。无论何时使用该控件,按键事件都将自动处理。如果不希望这样,那么就不需要自定义控件——只需像第二个示例中那样处理窗体上的控件事件。希望这是清楚的。