在C#中使用ComboBox中的间隔添加时间

时间:2016-05-06 10:56:27

标签: c# datetime time combobox

所以当下拉菜单出现时,我正拼命地在combobox中添加30分钟的时间间隔:

8:00 8:30 9:00 等等。我写了这段代码:

public FormNewAppointment()
{
    InitializeComponent();
    cmbBoxLength.Items.AddRange(new object[] { 30, 60, 90 });
    for (DateTime tm = time.AddHours(8); tm < time.AddHours(22); tm = time.AddMinutes(30))
    {
        cmbBoxStart.Items.Add(tm.ToShortTimeString());
    }
}

我尝试运行该程序...它崩溃所以我尝试调试它...我在循环中放置一个断点,因为问题集中在那里..而且令我惊讶的是,循环无限延续...第一个值是正确的早上8点,但不管我运行了多少次,只有下午12点30分已插入价值...我在下方有一张图片,以显示我在说什么......

ComboBox loop error with time intervals

当然,典型的问题出现了...我做错了什么?语法看起来不错,但我错过了一些东西......我被困了!!

2 个答案:

答案 0 :(得分:3)

尝试将代码更改为:

 for (DateTime tm = time.AddHours(8); tm < time.AddHours(22); tm = tm.AddMinutes(30))
            {
                cmbBoxStart.Items.Add(tm.ToShortTimeString());

            }

tm.AddMinutes(30))而不是tm = time.AddMinutes(30)

答案 1 :(得分:2)

您使用原始time变量的每个循环。这不会改变所以总是一样的。

public FormNewAppointment()
{
    InitializeComponent();
    cmbBoxLength.Items.AddRange(new object[] { 30, 60, 90 });

    DateTime EndTime = time.AddHours(22);    

    for (time = time.AddHours(8); time < EndTime; time = time.AddMinutes(30))
    {
        cmbBoxStart.Items.Add(time.ToShortTimeString());
    }
}