2015-08-31 52 views
2

我設計了一個windows窗體,其中textbox1直接放在窗體上,textbox2goupbox1上。在代碼下面運行只會更改textbox1的文字。我GOOGLE了很多,但我找不到解決方案。我怎樣才能達到textbox2如何訪問位於組框中的文本框?

public Form1() 
{ 
    InitializeComponent(); 
    foreach (TextBox txtBox in this.Controls.OfType<TextBox>()) 
    { 
     txtBox.Enter += textBox_Enter; 
     txtBox.Text = "123"; //To test if the text box is recognized or not 
    } 
} 

回答

2

您可以使用遞歸。
我建議你使用下面的擴展方法:

public static IEnumerable<T> GetAllControls<T>(Control control) 
{ 
    var controls = control.Controls.OfType<T>(); 
    return control.Controls.Cast<Control>() 
     .Aggregate(controls, (current, c) => current.Concat(GetAllControls<T>(c))); 
} 

用法:

var textBoxes = GetAllControls<TextBox>(this); 
+0

親愛的德米特里,你的答案是正是我需要的。但沒有足夠的解釋。您是否有可能更詳細地解釋您的解決方案? – GntS

+0

什麼不清楚?請問一個具體的問題, – Dmitry

+0

你能否給我提供一些關鍵詞給谷歌你的解決方案? – GntS