我需要一种方法来创建允许超过 24 小时的 TimeSpan 时间选择器列。现在,我得到了一个派生自 DateTimePicker 的 TimePicker,但在 24 之后,它又变回零。而且我没有找到改变它的行为的方法。
请帮忙。
谢谢你!
我需要一种方法来创建允许超过 24 小时的 TimeSpan 时间选择器列。现在,我得到了一个派生自 DateTimePicker 的 TimePicker,但在 24 之后,它又变回零。而且我没有找到改变它的行为的方法。
请帮忙。
谢谢你!
就像您在评论中所想的那样,处理此问题的最简单方法可能是拥有两个NumericUpDown控件 - 一个代表日期,另一个代表小时。
从那里,您将需要添加一些额外的逻辑。这些微调器本身不支持“翻转”,因此您必须自己编写代码。您将这些添加到事件中,并查看MSDN 文档,我认为您正在考虑连接到Click
事件。没有其他东西看起来特别有趣。
你的代码看起来有点像这样:
private void ctrlUpDownHour_Click(object sender, EventArgs e)
{
if(ctrlUpDownHour.Value >= 24)
{
ctrlUpDownDay.Value += 1;
ctrlUpDownHour.Value -= 24;
}
}
如果您将ctrlUpDownHour.Maximum
属性设置为 24,也可能会有所帮助。
编辑:如评论中所述,处理您的情况的最简单方法可能是简单地制作一个user control。
只需使用两个NumericUpDown
控件创建一个新的用户控件 - 通过在您的项目中创建一个新项目开始,然后单击“用户控件”项目 - 这会让您很好地开始。
然后,您可以根据需要直观地设计NumericUpDown
控件。处理完之后,你可以进入你的代码隐藏,并有一些看起来像这样的东西:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
// anything else you want to do here
}
public TimeSpan GetSelectedTimeSpan()
{
return new TimeSpan((int)numericUpDown1.Value, (int)numericUpDown2.Value, 0, 0);
}
}
然后,您可以将此用户控件与其他任何表单上的任何其他控件一样放置。然后,当您需要其中的 TimeSpan 时,您只需像捕获任何其他控件一样捕获控件并 go userControl1Instance.GetSelectedTimeSpan()
。
布拉莫,完成。