2010-07-14 5 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

내가 이것을 시도했을 때 textboxes 배열에는 아무 것도 나오지 않습니다. – Pieces

+0

오, 방금 업데이트를 보았습니다. 이상하게 들리지만, textBox1에서 textBox10으로 이동하여 텍스트 상자 9까지 최대 textBox2로 이동합니다 ... – Pieces

+0

문자열로 비교되기 때문에. 다음과 같이 사용할 수 있습니다 : OrderBy (i => int.Parse (i.Name.Replace ("textBox", "")) – Nagg

관련 문제