[英]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.