C# - DateTimePicker,检测上下点击事件
Posted
技术标签:
【中文标题】C# - DateTimePicker,检测上下点击事件【英文标题】:C# - DateTimePicker, detect up-down click events 【发布时间】:2012-10-18 17:58:19 【问题描述】:我正在重新编写 C# DateTimePicker (nullable)
以满足我的需求,但我一直无法从挑选时间 (HH:mm, DateTimePicker.ShowUpDown = true)
开始检测上下事件。
我知道OnValueChanged
在按下向上或向下按钮时会被触发,但我已经在那里进行了一些处理(当在 DateTimePicker 中输入数字时自动移动到下一个字段),因此当按下这些按钮时,我需要阻止 ValueChanged 事件,并在不同的函数中处理它。
我试图重写 WndProc 函数,但 OnValueChanged 在 WndProc 之前被调用。 OnKeyDown 也是在 OnValueChanged 之后调用的。
有什么想法吗?
【问题讨论】:
【参考方案1】:您可以尝试覆盖OnDropDown
,只要请求下拉日历,就会发生这种情况。
【讨论】:
如前所述,我使用 ShowUpDown 而不是日历。【参考方案2】:当DateTimePicker
的值更改时,您不应阻止ValueChanged
事件。 Up Down 按钮用于更改DateTimePicker
的值,因此按下它们应该会引发ValueChanged
事件。
考虑更改您当前对此事件的处理方式。
顺便说一句为什么当值改变时导航到下一个字段?只需为您的控件分配适当的TabIndex
值并允许用户使用Tab
按钮导航到下一个字段。这是一种常用的导航方法。
【讨论】:
我必须用 dd.MM.yyyy 控制一个,用 HH:mm 控制另一个。进入天数后,想把控件移到MM部分。 TabIndex 用于控件,而不是我所知道的 DateTimePicker 内部。 @user1782815 在 DateTimePicker 中左右方向键用于导航 是的,我知道这一点,但用户在输入日期或时间的一部分后没有必要使用箭头导航。我通过在 UpDown 按钮上方放置一个面板来解决此问题,因为我不需要此功能(因为用户可以在控件内使用箭头键)。 用户可以在控件内部使用箭头键,并不意味着他应该使用箭头键。喜欢使用鼠标的用户呢? 好点子,看来我必须在顶部创建自己的按钮(虽然这样做看起来很愚蠢,但我需要将 ValueChanged 和按钮点击分开)。以上是关于C# - DateTimePicker,检测上下点击事件的主要内容,如果未能解决你的问题,请参考以下文章
OroPlatform:如何覆盖 datetimepicker js 小部件
MySQL,PHP;检测 dateTimePicker 日期是不是已被使用并禁用它