C# 查找foreach循环所在的位置

C# 查找foreach循环所在的位置,c#,.net,winforms,C#,.net,Winforms,我试图找到当前foreach循环的位置,因此,我可以根据foreach循环的当前状态对其进行不同的处理。如果它在groupbox1或groupbox2中 int Name = 1; string Usernames = @"C:\UPHhour\names.txt"; using (FileStream fs = new FileStream(Usernames, FileMode.Create, FileAccess.Write))

我试图找到当前foreach循环的位置,因此,我可以根据foreach循环的当前状态对其进行不同的处理。如果它在groupbox1或groupbox2中

        int Name = 1;
        string Usernames = @"C:\UPHhour\names.txt";
        using (FileStream fs = new FileStream(Usernames, FileMode.Create, FileAccess.Write))
        using (StreamWriter sw = new StreamWriter(fs))
        {
            var Names = groupBox1.Controls.Cast<Control>().Concat(groupBox2.Controls.Cast<Control>());
            foreach(Control OLR_FF in Names.Cast<Control>().OrderBy(c => c.TabIndex))
            {                   
               if(!string.IsNullOrWhiteSpace(OLR_FF.Text.ToString()))
                {
                    //if the foreach loop is in groupbox1
                    if(OLR_FF is groupbox1)
                    {                           
                        //do something
                    }
                    // or if its in groupbox2 
                    if(OLF_FF is groupbox2) 
                    {
                        //do something different.
                    }
                    //sw.WriteLine("Name"+ Name++ + "=" + OLR_FF.Text.ToString());
                }
            }
        }
int Name=1;
字符串用户名=@“C:\UPHhour\names.txt”;
使用(FileStream fs=newfilestream(用户名、FileMode.Create、FileAccess.Write))
使用(StreamWriter sw=新StreamWriter(fs))
{
var name=groupBox1.Controls.Cast().Concat(groupBox2.Controls.Cast());
foreach(在Names.Cast().OrderBy(c=>c.TabIndex)中控制OLR\u FF)
{                   
if(!string.IsNullOrWhiteSpace(OLR\u FF.Text.ToString()))
{
//如果foreach循环在groupbox1中
如果(OLR\u FF是groupbox1)
{                           
//做点什么
}
//或者如果它在groupbox2中
如果(OLF_FF是groupbox2)
{
//做些不同的事情。
}
//sw.WriteLine(“Name”+Name++“=”+OLR_FF.Text.ToString());
}
}
}
如何知道循环是在groupbox1中还是在groupbox2中?

使用该属性,然后检查父项是否等于两个分组框中的一个

if(!string.IsNullOrWhiteSpace(OLR_FF.Text.ToString()))
{
    //if the foreach loop is in groupbox1
    if(groupbox1.Equals(OLR_FF.Parent))
    {                           
        //do something
    }
    // or if its in groupbox2 
    else if(groupbox2.Equals(OLF_FF.Parent))
    {
        //do something different.
    }
    //sw.WriteLine("Name"+ Name++ + "=" + OLR_FF.Text.ToString());
}

如果你实际上不想对这两个序列做同样的事情,那么首先就不要把它们连在一起。
If(OLR\u FF.Parent==groupbox1)
==
而不是
is
@Servy如果不是
中的
.OrderBy(c=>c.TabIndex)
,我会同意你的意见,如果顺序在两个分组框之间来回跳转,则执行两个单独的
foreach
将不会按制表符顺序处理项目。我不想使用两个不同的
foreach
来获得相同的结果,但我需要更改一件事,即
groupbox
foreach
是inlol。StackOverflow好像我必须等待7分钟才能标记为已回答。