這里要用兩個知識,一個是遞歸,一個是隊列。
//定義一個Control類型的隊列allCtrls private static Queue <Control> allCtrls = new Queue<Control>(); public form1() { CheckAllCtrls(this);//調用很簡單,把要遍歷的放進參數即可。如果控件沒有變化,則加載時調用一次即可。 } //遞歸遍歷所有的子孫控件包括容器類 private static void CheckAllCtrls(Control item ) { for (int i = 0; i < item.Controls.Count; i++) { if (item.Controls[i].HasChildren) { CheckAllCtrls(item.Controls[i]); } //else{allCtrls.Enqueue (item.Controls[i]);}//如果只要子控件,那么這個語句在else里 allCtrls.Enqueue(item.Controls[i]); } }
這樣
allCtrls這個隊列就有了所有的控件了
比如讓所有的按鈕控件text加上個“我是按鈕+”
foreach (Control devices in allCtrls) { if (devices is button DVC) { DVC.Text ="我是按鈕+" +DVC.Text ; } }
則整個form下所有的按鈕,無論有幾層容器,都會變化。
就是這么簡單。
有問題可以留言交流。