C# 遍歷所有的子控件和孫控件,包括容器中的,並批量操作和調用


這里要用兩個知識,一個是遞歸,一個是隊列。

//定義一個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下所有的按鈕,無論有幾層容器,都會變化。

就是這么簡單。

有問題可以留言交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM