我試圖找到當前foreach循環所在的位置,我可以根據當前狀態對foreach循環進行不同的處理。如果它在groupbox1或groupbox2中。找到foreach循環的位置
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());
}
}
}
我該如何瞭解循環是在groupbox1還是在groupbox2?
如果你實際上並不希望做同樣的事情到兩個序列,那麼就不要Concat的在一起第一個地方。 – Servy
'如果(OLR_FF.Parent == groupbox1)','=='而不是'is' –
@Servy我同意你,如果它不是'.OrderBy(c => c.TabIndex)'在'foreach',如果訂單在兩個組框之間來回跳動,則執行兩個單獨的'foreach'將不會按標籤順序處理這些項目。 –