Winフォームウィンドウを通過するすべてのコントロール(いくつかの方法で)C#トラバースすべてのコントロールは、すべてのコントロールを形成するか、または入力します

 

このリンク: https://blog.csdn.net/u014453443/article/details/85088733

ケリ技術交流グループ:460 189 483

C#の横断すべてのコントロールは、すべてのコントロールを形成するか、または入力します

  1.  
    //すべてのコントロールのフォームを横断し、
  2.  
    foreachの(コントロール制御this.Controls)
  3.  
    {
  4.  
    //後のトラバース操作...
  5.  
    control.Enabled = falseは、
  6.  
    }
  1.  
    パネル内のすべてのコントロールを
  2.  
     
  3.  
    foreachの(コントロール制御this.panel4.Controls)
  4.  
    {
  5.  
    control.Enabled = falseは、
  6.  
    }
  1.  
    すべてのTextBoxコントロールまたはすべてのタイプのDateTimePickerコントロールを通じ
  2.  
     
  3.  
    コードをコピー
  4.  
    foreachの(コントロール制御this.Controls)
  5.  
    {
  6.  
       //すべてのTextBoxをループ...
  7.  
    (コントロールがあればテキストボックスです)
  8.  
    {
  9.  
    テキストボックスT =(テキストボックス)コントロール。
  10.  
    = t.Enabled 偽;
  11.  
    }
  12.  
       //すべてのDateTimePickerをループ...
  13.  
    (コントロールがある場合のDateTimePickerです)
  14.  
    {
  15.  
    DateTimePickerのD =(のDateTimePicker)コントロール;
  16.  
    d.Enabled = falseは、
  17.  
    }
  18.  
    }

ボーエンは、主に、これらの2つの方法が制御を得るための方法を比較するために、以下の図面を制御します。

1.最も簡単な方法:

  1.  
    プライベート無効GetControls1(コントロールfatherControl)
  2.  
    {
  3.  
    Control.ControlCollection sonControls = fatherControl.Controls。
  4.  
    //コントロールのすべてをループ
  5.  
    foreachの(コントロール制御sonControls中)
  6.  
    {
  7.  
    listBox1.Items.Add(control.Name)。
  8.  
    }
  9.  
    }

 結果:

 

リストボックスに示された結果は、権利を取得し、あなたはありません取得した子コントロールパネル、グループボックス、コントロールのようなタブコントロールを見つけることができます。

オリジナルの再帰的な方法で2増加:

  1.  
    プライベート無効GetControls1(コントロールfatherControl)
  2.  
    {
  3.  
    Control.ControlCollection sonControls = fatherControl.Controls。
  4.  
    //コントロールのすべてをループ
  5.  
    foreachの(コントロール制御sonControls中)
  6.  
    {
  7.  
    listBox1.Items.Add(control.Name)。
  8.  
    (control.Controls!=の場合はnull)
  9.  
    {
  10.  
    GetControls1(対照)。
  11.  
    }
  12.  
    }
  13.  
    }

結果:

 

コントロールの大半を取得することがありますが、2つのコントロールタイマー、いるContextMenuStripを取得していないが残っています。

3.反射(反射)

  1.  
    プライベート無効GetControls2 (コントロールfatherControl)
  2.  
    {
  3.  
    //反射
  4.  
    System.Reflection.FieldInfo[] fieldInfo = this.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
  5.  
    for (int i = 0; i < fieldInfo.Length; i++)
  6.  
    {
  7.  
    listBox1.Items.Add(fieldInfo[i].Name);
  8.  
    }
  9.  
    }

结果:

 

结果显示所有控件都被获取到了。

 

おすすめ

転載: www.cnblogs.com/wfy680/p/12002269.html