Winforms& TimeSpan - 哪种控制效果最好?

时间:2009-02-19 15:53:42

标签: .net winforms timespan

我正在使用winforms构建表单 - 并且应该添加视图和可编辑的时间跨度值。 哪种控制最适合这个?

正常的编辑控件正确显示值 - >但改变价值并不是很好

正常日期时间选择器不起作用

屏蔽的编辑控件没有此

的任何标准蒙版

是否有人对控制此任务有好主意?

7 个答案:

答案 0 :(得分:5)

我构建了一个具有TextBox和ComboBox的选项来选择单位。用户控件具有范围设置(值+ - )和(时间单位)。根据挑选的单位,对文本框进行了范围检查 - 例如,1-7天可能有效但如果单位为分钟,则1-60分钟可能更好。

我也完成了两个ComboBox和NumericUpDown的组合。

如果您需要3天4小时6分钟的时间跨度,我可能会选择带有屏蔽文本框的用户控件并检查部件的范围。

通常,我会选择第一个。

只是我的两分钱。

答案 1 :(得分:5)

使用TimeSpan Helper,其中包含一个简单的控件(使用时未记录得太好)。

答案 2 :(得分:3)

使用普通文本框,结合使用TimeSpan.TryParse()检查值的错误提供程序控件和用于建议您期望的数据类型的工具提示。

如果需要,您也可以将所有这些组合到一个自定义控件中。

答案 3 :(得分:2)

对于另一个项目,我也必须编辑时间跨度。

我最终使用了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);

答案 4 :(得分:1)

如果您正在寻找一些有效的代码,请查看以下链接。

This blog post提供了WPF用户控件的源代码,用于选择时间跨度。

答案 5 :(得分:1)

同时尝试此扩展TimeSpanPicker

答案 6 :(得分:0)

如果您不需要超过24小时并且您不想指定毫秒,我认为DateTime选择器工作得最好,尤其是如果您创建用户控件以使其成为TimeSpan选择器。

好消息是你可以更新小时/分钟/秒。它会自动阻止您设置超过60分钟/秒的时间。 缺点:没有毫秒,也没有超过一天的时间。

在developer studio中添加一个新的用户控件:TimePicker。 在用户控件上放了一个DateTime选择器。 更改属性:

  • 格式:时间;这使你只能看到一个时间(以秒为单位)直到24小时
  • ShowUpDown:True:这使您无法打开日历。你会有几小时/分钟/秒的上调。

使用本地化时间格式。如果您想要特定的时间格式,请使用自定义时间格式。

对已验证的事件做出反应,将该值作为DateTime读取,并从同一天开始的午夜减去。结果将是TimeSpan。 在Valug.Get中返回此值。 Value.Set:将今天午夜的DateTime添加到TimeSpan进行设置。

如果您需要超过24小时,或者想要添加毫秒,请添加文本框并使用验证和TryParse。这甚至允许用户使用刻度而不是时间记录。如果未经过验证,请使用工具提示显示错误。