C# 为什么我的foreach循环没有´;不行?
我有2个foreach循环,我的第一个循环在一个方法中,这个方法在我的主窗体加载时开始,方法如下:C# 为什么我的foreach循环没有´;不行?,c#,winforms,loops,foreach,C#,Winforms,Loops,Foreach,我有2个foreach循环,我的第一个循环在一个方法中,这个方法在我的主窗体加载时开始,方法如下: private void GetDateDay() { foreach (DateTimePicker Dater in this.ReminderPanel.Controls.OfType<DateTimePicker>()) { label1.Text = "true"; DateTime DaterValue = Dater.Val
private void GetDateDay()
{
foreach (DateTimePicker Dater in this.ReminderPanel.Controls.OfType<DateTimePicker>())
{
label1.Text = "true";
DateTime DaterValue = Dater.Value;
DateList.Add(Dater.Value);
}
SundayTotal = DateList.Count(x => x.DayOfWeek == DayOfWeek.Sunday);
MondayTotal = DateList.Count(x => x.DayOfWeek == DayOfWeek.Monday);
TuesdayTotal = DateList.Count(x => x.DayOfWeek == DayOfWeek.Tuesday);
WednesdayTotal = DateList.Count(x => x.DayOfWeek == DayOfWeek.Wednesday);
ThursdayTotal = DateList.Count(x => x.DayOfWeek == DayOfWeek.Thursday);
FridayTotal = DateList.Count(x => x.DayOfWeek == DayOfWeek.Friday);
SaturdayTotal = DateList.Count(x => x.DayOfWeek == DayOfWeek.Saturday);
}
(TaskUC包含DateTimePicker-因此面板包含包含DateTimePicker的TaskUC)。控件集合仅包含直接子项,并且日期选择器嵌入更深一层。您需要遍历包含在提醒面板中的控件中的所有控件 而不是
foreach (DateTimePicker Dater in this.ReminderPanel.Controls.OfType<DateTimePicker>())
{
label1.Text = "true";
DateTime DaterValue = Dater.Value
DateList.Add(Dater.Value);
}
这将为您创建
日期列表
,而无需循环。如果您有大量数据,则会花费更长的时间,不会丢弃任何内容。如果您的代码从未进入foreach
,那么我怀疑您在提醒面板上没有日期时间选择器
控件,或者您有,但它们是子项的控件。如果您的控件确实嵌套得比提醒面板
更深,然后,您可能希望了解如何在控件层次结构的所有层次中获取IEnumerable
。就目前而言,我无法通过简单地将日期时间选择器
放在提醒面板
上重现您的问题。请包含指向显示designer.cs文件内容的dotnetfiddle的链接,以便我们可以看到您如何以及在何处添加日期时间选择器
控件。如果日期时间选择器不直接位于提醒面板下,则foreach循环不会执行。但是如果我显式需要foreach循环怎么办?因为我有另一个具有类似结构的方法,该方法发送通知,如以下示例所示:。foreach(提醒面板控件中的DateTimePicker Dater)。{DateTime Timer=Dater.Value;DateTime Now=DateTime.Now;.if(Now.Hour==Timer.Hour&&Now.Minute==Timer.Minute&&Now.Second==Timer.Second)。{//Send Notification}}您可以在以后做任何想做的事情,不管是否循环。我提供的代码填充您试图填充的列表。
foreach (DateTimePicker Dater in this.ReminderPanel.Controls.OfType<DateTimePicker>())
{
label1.Text = "true";
DateTime DaterValue = Dater.Value
DateList.Add(Dater.Value);
}
DateList = this.ReminderPanel.Controls //Get all controls on the panel
.SelectMany( c => c.Controls ) //Get all controls contained in those controls
.OfType<DateTimePicker>() //Only include DateTimePickers
.Select( dtp => dtp.Value ) //Get the value
.ToList(); //Make it a list