代码之家  ›  专栏  ›  技术社区  ›  bernhardrusch

WinForms和TimeSpan-哪个控件最有效?

  •  3
  • bernhardrusch  · 技术社区  · 15 年前

    我正在用winforms构建一个表单,应该添加一个视图和可编辑的时间跨度值。 哪种控制方法最适合这种情况?

    普通的编辑控件正确地显示值->但它并不适合更改值

    正常日期时间选取器不工作

    屏蔽的编辑控件没有用于此的任何标准掩码

    有人对控制这项任务有什么好主意吗?

    7 回复  |  直到 11 年前
        1
  •  5
  •   itsmatt    15 年前

    我建立了一个文本框和一个组合框来选择单位。用户控件具有范围设置(值+-)和(时间单位)。根据选择的单位,文本框被选中范围-例如,1-7天可能有效,但如果单位是分钟,1-60分钟可能更好。

    我已经完成了两个组合框和一个数字组合框的组合。

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

    不过,通常我会选择第一个。

    就我的两分钱。

        2
  •  5
  •   Pat    14 年前

    使用 TimeSpan Helper 其中包括一个简单的控件(当我使用它时,它的文档记录得不太好)。

        3
  •  3
  •   Joel Coehoorn    15 年前

    使用一个普通的文本框,再加上一个错误提供程序控件,该控件使用TimeSpan.Tryparse()和一个工具提示检查值,以提示您期望的数据类型。

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

        4
  •  2
  •   bernhardrusch    11 年前

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

    我最后使用了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);
    
        5
  •  1
  •   mathijsuitmegen    15 年前

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

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

        6
  •  1
  •   Zain Ali    12 年前

    也试试这个扩展 TimeSpanPicker

        7
  •  0
  •   Harald Coppoolse    11 年前

    如果您不需要允许超过24小时,并且不想指定毫秒,我认为日期时间选择器最有效,特别是如果您创建一个用户控件使其成为时间跨度选择器。

    好事情是你可以增加小时/分钟/秒。它会自动阻止您将时间设置为超过60分钟/秒。 缺点:不到毫秒,不超过一天。

    在Developer Studio中添加新的用户控件:TimePicker。 在用户控件上放置日期时间选择器。 更改属性:

    • 格式:时间;这使您只能看到24小时之前的时间(以秒为单位)
    • ShowupDown:对:这使得您无法打开日历。你将有一个小时/分钟/秒的上下颠倒。

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

    对验证为将值作为日期时间读取的事件做出反应,并从当天开始的午夜减去if。结果将是一个时间跨度。 在valug.get中返回该值。 value.set:将今天午夜的日期时间添加到要设置的时间跨度中。

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