繁体   English   中英

C# WinForms 循环通过 DateTimePicker

[英]C# WinForms Loop through DateTimePicker

我的应用程序是一个调度程序,使用 DataGridView 构建。

我想循环通过 DateTimePicker 并增加每次循环的天数并将其添加到 DataGridView 中。 我的实际问题是,在我单击添加按钮后,它会将 x 行数放入我的列表中,但不会增加天数。 所以我得到了相同日期的 X 行。

它应该如何工作:从 combobox 列表中选择一个日期 select 案例,间隔会自动添加。 然后实际检查间隔是否为(每天/工作日)。 如果我现在单击“添加条目”按钮,它会将输入添加到 datagridview 中。 日期/案例/间隔/添加者(来自 userprincipal)。

这是我的实际代码:

        void Button1Click(object sender, EventArgs e) // Add intervall
        {
            addIntervall();
            
        }
        void addIntervall()
        {           
            if (cbIntervall.Text == "daily")
            {
                for (int i = 0; i < 7; i++)
                {
                    datePicker.Value.AddDays(1);
                    schedulerGrid.Rows.Add(datePicker.Text, cbCase.Text, cbIntervall.Text, lblUserDisplay.Text);
                }
            
            }
        }

我的下一步是为“仅在一周内”添加另一个步骤,以便排除周末。

编辑:刚刚插入来自 Enigmativity 的代码,它工作正常!

                for (int i = 0; i < 7; i++)
                {
                    DateTime value = datePicker.Value;
                    DateTime updated = value.AddDays(1);
                    schedulerGrid.Rows.Add(datePickerControl.Text, datePicker.Text, cbCase.Text, cbIntervall.Text, lblUserDisplay.Text);
                    datePicker.Value = updated;
                }

你的问题是datePicker.Value.AddDays(1); 返回一个新的日期。 您正在计算它并丢弃价值。 就好像你写了这个:

DateTime value = datePicker.Value
DateTime updated = value.AddDays(1);

你只是没有对updated做任何事情。

你需要这个:

datePicker.Value = updated;

如果是我这样做,我不会依赖为您格式化字符串的控件。 我会将构建行与将它们添加到网格中分开。

尝试这个:

void AddInterval()
{
    if (cbInterval.Text == "daily")
    {
        var rows =
            from i in Enumerable.Range(0, 7)
            let date = datePicker.Value.AddDays(i).ToString()
            select new
            {
                date,
                caseText = cbCase.Text,
                interval = cbInterval.Text,
                userDisplay = lblUserDisplay.Text,
            };
                
        foreach (var row in rows)
        {
            schedulerGrid.Rows.Add(
                row.date,
                row.caseText,
                row.interval,
                row.userDisplay);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM