我正在使用 winforms 构建一个表单 - 并且应该添加一个视图和可编辑的时间跨度值。哪种控制最适合这个?
正常的编辑控件正确显示值->但更改值并不是很好
正常的日期时间选择器不起作用
蒙版编辑控件没有任何标准蒙版
有人对此任务有控制的好主意吗?
我构建了一个文本框和一个组合框来选择单位。用户控件具有范围设置(值 +-)和(时间单位)。根据选择的单位,文本框的范围被选中 - 例如,1-7 天可能有效,但如果单位是分钟,则 1-60 分钟可能会更好。
我也完成了两个 ComboBoxes 和 NumericUpDown 的组合。
如果您需要像 3 天 4 小时 6 分钟这样的时间跨度,我可能会选择带有蒙版文本框的用户控件并检查部件的范围。
不过,通常情况下,我会选择第一个。
只是我的两分钱。
使用TimeSpan Helper,其中包括一个简单的 Control (当我使用它时没有很好地记录它)。
使用一个普通的文本框,再加上一个错误提供程序控件,该控件使用 TimeSpan.TryParse() 来检查值,以及一个用于建议您期望什么样的数据的工具提示。
如果需要,您也可以将所有这些组合到一个自定义控件中。
对于另一个项目,我也必须编辑时间跨度。
我终于使用了 3 个数字上/下控件:第一个控制总小时数,第二个控制分钟数,第三个控制秒数。
//Setting the values
durationHours.Value = (Decimal)Math.Floor (data.TotalHours);
durationMin.Value = data.Minutes;
durationSeconds.Value = data.Seconds;
//Getting the values
data = new TimeSpan((int)durationHours.Value, (int)durationMin.Value, (int)durationSeconds.Value);
如果您正在寻找一些工作代码,请查看下面的链接。
此博客文章提供了用于选择时间跨度的 WPF 用户控件的源代码。
也试试这个扩展的 TimeSpanPicker
如果您不想允许超过 24 小时并且您不想指定毫秒,我认为 DateTime 选择器效果最好,特别是如果您创建一个用户控件以使其成为 TimeSpan 选择器。
好消息是你可以调高小时/分钟/秒。它会自动阻止您设置超过 60 分钟/秒的时间。缺点:没有毫秒,也没有超过一天的时间。
在开发人员工作室中添加一个新的用户控件:TimePicker。在用户控件上放置一个日期时间选择器。更改属性:
使用本地化时间格式。如果您想要特定的时间格式,请使用自定义时间格式。
对经过验证的事件做出反应,将值读取为 DateTime 并从同一天开始时的午夜减去 if。结果将是一个时间跨度。在 Valug.Get 中返回此值。Value.Set:将今天午夜的 DateTime 添加到 TimeSpan 中进行设置。
如果您需要超过 24 小时,或者想要添加毫秒,请添加一个文本框并使用验证和 TryParse。这甚至允许用户使用刻度而不是时间通知。如果未验证,请使用工具提示显示错误。