65.9K
CodeProject 正在变化。 阅读更多。
Home

.NET TimePicker

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (35投票s)

2003年7月8日

5分钟阅读

viewsIcon

315889

downloadIcon

9939

标准.NET日期时间选择器的变体

引言

您是否用过.NET自带的DateTimePicker?如果是,您一定很欣赏那个易于使用的下拉日历,您可以点击您需要的日期。您甚至可以轻松地在面板顶部的月份和年份之间导航。我认识的每个用户都喜欢这个组件。

DateTimePicker也可以转换为TimePicker。不幸的是,我从未对这个TimePicker感到满意,因为它使用了一个数字增减控件来选择时间。它没有下拉功能。用户必须手动输入他/她的时间,这总是让我困扰。我问自己是否有一种更简单的方法来选择时间。

通过我的TimePicker,这个问题就解决了。TimePicker显示一个非常类似于DateTimePicker的下拉面板。面板上没有日期,而是小时和分钟。您点击所需的时间,然后点击面板外部,即可看到时间被分配给TimePicker控件。

TimePicker v2终于完成

四年后,我终于决定更新TimePicker。根据评论,它存在一些错误。我花时间修复了一些错误,并添加了一些新功能。我试图保持相同的功能,以避免任何破坏性更改。如果我弄坏了什么,我很抱歉。对于那些想要.NET 3.0或Vista上的TimePicker的人,我还没有(尚未)使用过这些技术。试试看,让我知道。

新功能

  • KeyToHidePicker是TimePicker的一个新属性。分配一个键盘按键来隐藏拾取器。这对于那些想通过键盘隐藏拾取器而不是点击其他地方的人来说很有用。默认按键是Esc。
  • 增加字体大小会使控件变大。早期版本没有这样做。下拉按钮和复选框也会随之调整大小。
  • 添加了TimeChangeEventArgs类。当TimePicker的Value属性更改时,会触发一个事件,其中包含TimeChangeEventArgs的实例。它包含之前的时间跨度值和新值。这可能是唯一的破坏性更改。在以前的版本中,我传递的是一个EventArgs对象。
  • 当复选框可见时,它控制时间的启用或禁用状态。当复选框不可见时,TimePicker的Enable属性控制TimePicker的状态。

修复

  • 我绘制时间而不是使用.NET控件。这给了我更大的控制权。
  • 当TimePicker在选项卡页面中时,分钟现在会正确绘制。
  • 小时和分钟之间的分隔符绘制正确。
  • 重构了代码,使其更符合.NET 2.0。类现在是部分的,UI组件位于其自己的单独文件中。
  • 更改了下拉箭头,使其更像DateTimePicker中的箭头。

如何安装?

只需将DLL添加到Visual Studio .NET工具箱中。您会在最后看到一个名为TimePicker的项。只需将此组件拖放到您的窗体上,您就可以开始使用TimePicker了。

它是如何工作的?

您只需点击组件右侧的下拉箭头即可设置所需的时间。然后调用Value属性来获取该时间。我使用TimeSpan来保存时间,因为.NET Framework已经有了处理时间值的结构。

如果您想要时间的字符串表示形式,可以使用TimePicker中实现的ToString方法,或者将TimeSpan抛回DateTime结构中并调用其ToString,它有很多预定义的格式。

有用的属性

TimePicker有一些我添加的有趣属性。阅读以下内容,了解如何根据需要自定义TimePicker

ButtonColor

您可以选择按钮的颜色。此颜色将用于未选中的按钮。

Checked

返回控件复选框状态的属性

格式

一个由TimePicker解析的字符串。格式负责在TimePicker控件中显示时间。

RightToLeft

如果要将时间放在TimePicker的右侧,请更改此属性。

ShowCheckBox

一个布尔值,用于在控件左侧放置一个复选框。点击复选框将启用控件的其余部分。

ShowDropDown

一个布尔值,使组件右侧的箭头消失。由于用户可以点击小时或分钟,一些开发人员可能希望隐藏下拉箭头。


SelectedColor

您可以选择您喜欢的颜色用于选中的按钮。

分隔符

在此插入一个字符。根据开发者的偏好,您可以使用任何您想要的字符来分隔小时和分钟。

SeparatorColor

不要将此属性与Separator混淆,它们没有关系。SeparatorColor是用于在面板中分隔小时和分钟的颜色。如果您使用ButtonColorSelectedColor更改按钮的颜色,您可能希望通过为分隔符选择一种颜色来协调显示。

TimeSelector

一个枚举,用于更改TimePicker的模式。如果您只想在TimePicker中显示小时,请将此属性设置为Hours。如果您也想要分钟,请选择Minutes值,如果您想要两者,请选择HoursAndMinutes。对于想要使用TimePicker来选择秒的人,只需使用Minutes值,并在旁边放置一个名为Seconds的标签。

Value属性是TimeSpan结构。它保存您通过用户界面设置的时间。您可以通过我的自定义TimePicker界面进行更改,方法是像下图那样点击它。

技巧

  • 您可以使用我的自定义TimePicker更改Value属性。由于TimePicker以模态模式显示,您必须点击分隔符来隐藏窗体。
  • 除了始终点击下拉箭头,您还可以直接点击小时或分钟。
  • 更改分隔符时,不必费心更改格式字符串。当您更改属性时,我的组件会自动更新。
  • 如果您只想在TimePicker中看到小时,请将TimeSelector属性更改为Hours。分钟也是如此。
© . All rights reserved.