Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的foreach循环没有´;不行?_C#_Winforms_Loops_Foreach - Fatal编程技术网

C# 为什么我的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

我有2个foreach循环,我的第一个循环在一个方法中,这个方法在我的主窗体加载时开始,方法如下:

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