C# WinForm遍歷窗體控件的3種方法
更新時間:2021年04月12日 08:41:13 作者:五維思考
這篇文章主要介紹了C# WinForm遍歷窗體控件的3種方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
1.循環(huán)遍歷
private void GetControls(Control fatherControl) { Control.ControlCollection sonControls = fatherControl.Controls; foreach (Control control in sonControls) { listBox1.Items.Add(control.Name); } }
結(jié)果:能獲取到Panel、GroupBox、TabControl等控件
問題:Panel等控件上面的子控件獲取不到
2.遞歸遍歷
private void GetControls(Control fatherControl) { Control.ControlCollection sonControls = fatherControl.Controls; foreach (Control control in sonControls) { listBox1.Items.Add(control.Name); if (control.Controls != null) { GetControls(control); } } }
結(jié)果:能獲取到絕大多數(shù)控件
問題:Timer、ContextMenuStrip等控件獲取不到
3.使用反射
private void GetControls(Control fatherControl) { System.Reflection.FieldInfo[] fieldInfo = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance); for (int i = 0; i < fieldInfo.Length; i++) { listBox1.Items.Add(fieldInfo[i].Name); } }
結(jié)果:所有控件都被獲取到了
DevExpress
控件無法使用this.Controls
進行遍歷,只能通過反射的方法獲得,如下代碼:
public void SearchBarManager() { Type FormType = this.GetType(); FieldInfo[] fi = FormType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public); foreach (FieldInfo info in fi) { if (info.FieldType == typeof(DevExpress.XtraBars.BarManager)) { DevExpress.XtraBars.BarManager bar = (info.GetValue(this)) as DevExpress.XtraBars.BarManager; foreach (DevExpress.XtraBars.BarItem bi in bar.Items) { MessageBox.Show(bi.Name); } } } }
以上就是C# WinForm遍歷窗體控件的3種方法的詳細內(nèi)容,更多關(guān)于WinForm遍歷窗體控件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標
這篇文章主要介紹了C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下2021-03-03C#使用IronPython庫調(diào)用Python腳本
這篇文章介紹了C#使用IronPython庫調(diào)用Python腳本的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06