【问题标题】:C# - DateTimePicker, detect up-down click eventsC# - DateTimePicker,检测上下点击事件
【发布时间】:2012-10-18 17:58:19
【问题描述】:

我正在重新编写 C# DateTimePicker (nullable) 以满足我的需求,但我一直无法从挑选时间 (HH:mm, DateTimePicker.ShowUpDown = true) 开始检测上下事件。

我知道OnValueChanged 在按下向上或向下按钮时会被触发,但我已经在那里进行了一些处理(当在 DateTimePicker 中输入数字时自动移动到下一个字段),因此当按下这些按钮时,我需要阻止 ValueChanged 事件,并在不同的函数中处理它。

我试图重写 WndProc 函数,但 OnValueChanged 在 WndProc 之前被调用。 OnKeyDown 也是在 OnValueChanged 之后调用的。

有什么想法吗?

【问题讨论】:

    标签: c# winforms datetimepicker


    【解决方案1】:

    您可以尝试覆盖OnDropDown,只要请求下拉日历,就会发生这种情况。

    【讨论】:

    • 如前所述,我使用 ShowUpDown 而不是日历。
    【解决方案2】:

    DateTimePicker 的值更改时,您不应阻止ValueChanged 事件。 Up Down 按钮用于更改DateTimePicker 的值,因此按下它们应该会引发ValueChanged 事件。

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

    顺便说一句为什么当值改变时导航到下一个字段?只需为您的控件分配适当的TabIndex 值并允许用户使用Tab 按钮导航到下一个字段。这是一种常用的导航方法。

    【讨论】:

    • 我必须用 dd.MM.yyyy 控制一个,用 HH:mm 控制另一个。进入天数后,想把控件移到MM部分。 TabIndex 用于控件,而不是我所知道的 DateTimePicker 内部。
    • @user1782815 在 DateTimePicker 中左右方向键用于导航
    • 是的,我知道这一点,但用户在输入日期或时间的一部分后没有必要使用箭头导航。我通过在 UpDown 按钮上方放置一个面板来解决此问题,因为我不需要此功能(因为用户可以在控件内使用箭头键)。
    • 用户可以在控件内部使用箭头键,并不意味着他应该使用箭头键。喜欢使用鼠标的用户呢?
    • 好点子,看来我必须在顶部创建自己的按钮(虽然这样做看起来很愚蠢,但我需要将 ValueChanged 和按钮点击分开)。
    猜你喜欢
    • 2022-06-15
    • 2011-11-20
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多