C# - DateTimePicker,检测向上和向下的点击事件

3
我正在重新编写 C# 的 DateTimePicker (nullable) ,以满足我的需求,但我卡在了探测从选择时间 (HH:mm, DateTimePicker.ShowUpDown = true) 开始的上下事件上。
我知道当按下上或下按钮时,OnValueChanged 会被触发,但我已经在那里处理了一些操作(在 DateTimePicker 中输入数字后自动移动到下一个字段),因此我需要在这些按钮被按下时阻止 ValueChanged 事件,并在不同的函数中处理它。
我试图覆盖 WndProc 函数,但 OnValueChanged 被调用之前会先调用它。OnKeyDown 在 OnValueChanged 后也会被调用。
有什么想法吗?
2个回答

0

嗯,你可以尝试重写 OnDropDown 方法,该方法在请求下拉日历时触发。


如前所述,我正在使用ShowUpDown而不是日历。 - user1782815

0

当更改DateTimePicker的值时,不应阻止ValueChanged事件。并且上下按钮用于更改DateTimePicker的值,因此按下它们应该引发ValueChanged事件。

考虑更改当前处理此事件的方式。

顺便问一下,为什么在值更改时要导航到下一个字段?只需为控件分配适当的TabIndex值,允许用户使用Tab按钮导航到下一个字段。这是一种常见的导航方法。


我有两个控件,一个是dd.MM.yyyy格式的,另一个是HH:mm格式的。在输入日期后,我希望控件能够自动跳转到月份部分。我知道TabIndex是用于控件而不是DateTimePicker内部的。 - user1782815
@user1782815 在 DateTimePicker 中使用左右箭头键进行导航。 - Sergey Berezovskiy
是的,我知道这一点,但用户在输入日期或时间的一部分后使用箭头导航是不必要的。我通过在 UpDown 按钮上方放置一个面板来解决了这个问题,因为我不需要这个功能(因为用户可以在控件内使用箭头键)。 - user1782815
用户能在控件内使用箭头键并不意味着他应该使用箭头键。那些更喜欢使用鼠标的用户怎么办呢? - Sergey Berezovskiy
好的,看起来我需要在顶部创建自己的按钮(虽然这可能看起来很愚蠢,但我需要将ValueChanged和按钮点击分开)。 - user1782815

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接