2009-02-19 151 views
3

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

一个正常的编辑控件显示正确的价值 - >但它不是非常好的改变值

正常的日期时间选择器不工作

的屏蔽的编辑控件没有有任何标准面具这个

有没有人有这个任务控制一个好主意?

回答

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); 
2

使用正常的文本框,再加上检查使用TimeSpan.TryParse()值和提示你期待什么样的数据的工具提示错误提供商控制。

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

5

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

我已经完成了一个NumericUpDown的两个组合框的组合。

如果你需要的时间跨度是像3天4小时6分钟的事情,我可能会选择带有蒙版文本框和范围检查部件的用户控件。

通常,我选择第一个,但。

只是我的两分钱。

+0

第三声音很像我认为应该控制工作 – bernhardrusch 2009-02-19 16:22:47

+0

很好的回答。我也选择了#3。 – 2012-03-26 16:14:09

1

如果您正在寻找一些工作代码,请查看下面的链接。

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

5

使用TimeSpan Helper,其中包括一个简单的控制(当我用它时没有记录得太好)。

0

如果你不需要想允许超过24小时,你不希望指定毫秒我认为日期时间选择器的工作原理是最好的,特别是如果你创建一个用户控制使其成为TimeSpan选取器。

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

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

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

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

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

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