我正在用winforms构建一个表单 - 并且应该添加一个视图和可编辑的时间跨度值。 哪个控件最适合这个?Winforms和TimeSpan - 哪种控件最适合?
一个正常的编辑控件显示正确的价值 - >但它不是非常好的改变值
正常的日期时间选择器不工作
的屏蔽的编辑控件没有有任何标准面具这个
有没有人有这个任务控制一个好主意?
我正在用winforms构建一个表单 - 并且应该添加一个视图和可编辑的时间跨度值。 哪个控件最适合这个?Winforms和TimeSpan - 哪种控件最适合?
一个正常的编辑控件显示正确的价值 - >但它不是非常好的改变值
正常的日期时间选择器不工作
的屏蔽的编辑控件没有有任何标准面具这个
有没有人有这个任务控制一个好主意?
对于另一个项目,我不得不编辑一个时间跨度。
我终于使用了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);
使用正常的文本框,再加上检查使用TimeSpan.TryParse()值和提示你期待什么样的数据的工具提示错误提供商控制。
如果您愿意,也可以将所有这些组合到一个自定义控件中。
我构建了一个TextBox加上ComboBox以选择单位的文本框。用户控件具有范围设置(值+ - )和(时间单位)。根据挑选的单位,文本框被隔开检查 - 例如,1-7天可能有效,但如果单位是分钟,则1-60分钟可能会更好。
我已经完成了一个NumericUpDown的两个组合框的组合。
如果你需要的时间跨度是像3天4小时6分钟的事情,我可能会选择带有蒙版文本框和范围检查部件的用户控件。
通常,我选择第一个,但。
只是我的两分钱。
如果您正在寻找一些工作代码,请查看下面的链接。
This blog post提供用于选择时间跨度的WPF用户控件的源代码。
使用TimeSpan Helper,其中包括一个简单的控制(当我用它时没有记录得太好)。
也可以尝试这个扩展TimeSpanPicker
如果你不需要想允许超过24小时,你不希望指定毫秒我认为日期时间选择器的工作原理是最好的,特别是如果你创建一个用户控制使其成为TimeSpan选取器。
好的是你可以更新小时/分钟/秒。它会自动阻止您设置超过60分钟/秒的时间。缺点:没有毫秒,也不会超过一天。
在developer studio中添加一个新的用户控件:TimePicker。 在用户控件上放置一个DateTime选择器。 更改属性:
使用本地化的时间格式。如果您想要特定的时间格式,请使用自定义时间格式。
对已验证的事件进行响应,以将该值读取为DateTime,并在同一天的开始时从Midnight中减去该值。结果将是TimeSpan。 在Valug.Get中返回此值。 Value.Set:将今天午夜的DateTime添加到TimeSpan中进行设置。
如果您需要超过24小时,或想要添加毫秒,请添加一个文本框并使用验证和TryParse。这甚至会允许用户使用刻度而不是时间通知。如果未验证,请使用工具提示显示错误。
第三声音很像我认为应该控制工作 – bernhardrusch 2009-02-19 16:22:47
很好的回答。我也选择了#3。 – 2012-03-26 16:14:09