2010-07-14 52 views
3

我有一堆文本框,大約150個。它們位於選項卡控件的不同選項卡內,並且不按屏幕上的名稱排序。它們被簡單地命名爲textBox1,textBox2,textBox3 ...我希望能夠按名稱順序迭代它們,而不是它們在窗體上的顯示方式。我怎麼會這樣做呢?按名稱順序迭代文本框,在標籤控件內

回答

5
public IEnumerable<Control> GetChildrenRecursive(Control parent) 
{ 
    var controls = new List<Control>(); 
    foreach(Control child in parent.Controls) 
     controls.AddRange(GetChildrenRecursive(child)); 
    controls.Add(parent); //fix 
    return controls; 
} 

TextBox[] textboxes = GetChildrenRecursive(this) 
     .OfType<TextBox>().OrderBy(i => i.Name).ToArray(); 
+0

當我嘗試這個時,並沒有最終成爲文本框數組中的任何東西。 – Pieces 2010-07-14 13:42:40

+0

哦,剛剛看到你的更新,雖然它的奇怪,但它從textBox1到textBox10去按順序,直到結束然後回到textBox2到textBox9 ... – Pieces 2010-07-14 13:46:27

+0

因爲它比較爲一個字符串。你可以使用像這樣的東西:OrderBy(i => int.Parse(i.Name.Replace(「textBox」,「」)) – Nagg 2010-07-14 13:51:34