【问题标题】:Cursor/selection position in DateTimePickerDateTimePicker 中的光标/选择位置
【发布时间】:2009-11-17 04:16:58
【问题描述】:

我正在尝试确定日期(或时间)编辑器的当前选定部分。当使用 PDA 上的导航键时,我需要提供自定义操作。特别是当按下右按钮并选择日期的最后一部分(例如年份)时,我希望焦点转到下一个控件。默认行为是循环浏览日期部分。

我查看了 DateTimePicker (link) 的 Win32 API 选项,但它似乎不支持这一点。

有什么建议吗?

【问题讨论】:

    标签: .net .net-2.0 datetimepicker compact-framework


    【解决方案1】:

    .Net cf 日期选择器是一个 PITA。

    当焦点位于日期选择器上时,您是否尝试过为“右”按钮捕获和覆盖 KeyUp event?您可以计算按下“右”键的次数,通过这种方式您可以伪造位置设置:当日期选择器接收焦点时将计数器变量设置为 1,当您截获“右”键时将其递增 1。测试它是否是“Right”键以及计数器变量是否是三的倍数,设置 e.Handled = true 以防止执行默认行为。当然,您的覆盖逻辑是将焦点设置到下一个控件。

    编辑:不要忘记在“左”键按下时减少计数器变量!

    自定义选项:我认为您最好的选择是构建您自己的自定义日期控件。我已经做到了。这不是太难。这是对齐控件中的三个文本框并进行一些基本验证的问题。如果需要,您还可以使用选择器的日历部分。

    在OpenNetCF 中扎根也是值得的。虽然我不确定是否会有日期选择器的替代品,但其中有很多课程。不过,如果你是认真的 CF 开发者,还是值得一看的。

    【讨论】:

    • CF.NET DateTimePicker 有没有免费的替代品?我会记住你的建议。当然,如果使用按键和手写笔的组合将无法正常工作。
    • 我找到了一个免费的日期选择器,而且情况更糟。老实说,我认为您最好的选择是建立自己的自定义日期控件。我已经做到了。这不是太难。这是一个对齐控件中的三个文本框并进行一些基本验证的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2011-09-01
    • 2012-04-14
    相关资源
    最近更新 更多