DataGridView中的TimeSpan选取器允许超过24小时

Bes*_*ter 1 c# timespan datagridview winforms

我需要一种方法来创建TimeSpan时间选择器列,允许超过24小时.现在,我得到了一个从DateTimePicker派生的TimePicker,但在24之后,它又回到了零.我没有找到改变它的行为的方法.

请帮忙.

谢谢!

tme*_*ser 6

就像你在评论中想的那样,处理这个问题最简单的方法可能就是有两个NumericUpDown控件 - 一个表示日期,另一个表示小时数.

从那里,您需要添加一些额外的逻辑.这些微调器本身不支持"翻转",因此您必须自己编写代码.您将这些添加到事件,并查看MSDN文档,我认为您正在寻找挂钩Click事件.没有别的东西看起来特别有趣.

你的代码看起来像这样:

 private void ctrlUpDownHour_Click(object sender, EventArgs e)
 {
    if(ctrlUpDownHour.Value >= 24)
    {
        ctrlUpDownDay.Value += 1;
        ctrlUpDownHour.Value -= 24;
    }
 }
Run Code Online (Sandbox Code Playgroud)

如果将ctrlUpDownHour.Maximum属性设置为24,也可能会有帮助.

编辑:正如评论中提到的,处理您的情况最简单的方法可能是简单地进行用户控制.

只需使用两个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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以将此用户控件与任何其他窗体上的任何其他控件一样放置.然后,当你需要TimeSpan时,你只需捕获控件,就像你控制其他控件一样userControl1Instance.GetSelectedTimeSpan().

Blammo,完成了.