欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • Question:基于C#連續(xù)賦值的面試題介紹

    Question:基于C#連續(xù)賦值的面試題介紹

    本篇文章是關(guān)于C#中連續(xù)賦值的面試題介紹,需要的朋友參考下
    2013-05-05
  • C#類中方法的執(zhí)行順序是什么

    C#類中方法的執(zhí)行順序是什么

    有些中級開發(fā)小伙伴還是搞不太明白在繼承父類以及不同場景實例化的情況下,父類和子類的各種方法的執(zhí)行順序到底是什么,本文就來介紹一下
    2021-05-05
  • C#多線程用法詳解

    C#多線程用法詳解

    本文詳細講解了C#多線程用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標

    C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標

    這篇文章主要介紹了C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • Unity3D實現(xiàn)打磚塊游戲

    Unity3D實現(xiàn)打磚塊游戲

    這篇文章主要為大家詳細介紹了Unity3D實現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C#使用IronPython庫調(diào)用Python腳本

    C#使用IronPython庫調(diào)用Python腳本

    這篇文章介紹了C#使用IronPython庫調(diào)用Python腳本的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C# 內(nèi)部類與Lambda表達式用法詳解

    C# 內(nèi)部類與Lambda表達式用法詳解

    Lambda表達式是一個匿名函數(shù),Lambda表達式基于數(shù)學中的λ演算得名,直接對應(yīng)于其中的lambda抽象,是一個匿名函數(shù),即沒有函數(shù)名的函數(shù);內(nèi)部類是將一個類定義在另一個給類里面或者方法里面,這樣的類就被稱為內(nèi)部類
    2021-10-10
  • Unity UI實現(xiàn)拖拽旋轉(zhuǎn)

    Unity UI實現(xiàn)拖拽旋轉(zhuǎn)

    這篇文章主要為大家詳細介紹了Unity UI實現(xiàn)拖拽旋轉(zhuǎn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 10個C#程序員經(jīng)常用到的實用代碼片段

    10個C#程序員經(jīng)常用到的實用代碼片段

    如果你是一個C#程序員,那么本文介紹的10個C#常用代碼片段一定會給你帶來幫助,從底層的資源操作,到上層的UI應(yīng)用,這些代碼也許能給你的開發(fā)節(jié)省不少時間。以下是原文:
    2015-09-09
  • WPF實現(xiàn)能自由改變形狀的四邊形和六邊形

    WPF實現(xiàn)能自由改變形狀的四邊形和六邊形

    這篇文章主要為大家詳細介紹了WPF如何實現(xiàn)能自由改變形狀的四邊形和六邊形,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03

最新評論