C# 查找foreach循环所在的位置
我试图找到当前foreach循环的位置,因此,我可以根据foreach循环的当前状态对其进行不同的处理。如果它在groupbox1或groupbox2中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))
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分钟才能标记为已回答。