Winform1如何获取Winform2下的所有CheckBox并修改属性?(用于恢复默认设置很好)
form2下重载构造函数,将页面下的所有type为checkbox的控件找到存入数组:
public form2(CheckBox[] obj )
{
   InitializeComponent();
   foreach(CheckBox ob in this) //this调用默认构造,但foreach报错了.
   {
      int i=1;
      if(( ob as CheckBox)!= null)
      {
         obj[i] = ob;
         i++;
      }
    }
}
---------------------由于上面报错,用傻办法写:
public Control(CheckBox [] check)
{
InitializeComponent();
this.checkBox1.Checked=check[0].Checked;
this.checkBox2.Checked=check[1].Checked;
              ......................=check[27].checked;
---------------------
再在form1中new form2出来:
//恢复默认设置。
private CheckBox [] obj= new CheckBox[28];
private void menuItem44_Click(object sender, System.EventArgs e)
{
   //把所有勾选值设置为true;
   for(int i=0;i<28;i++)
   {
       obj[i] = new CheckBox();
       obj[i].Checked = true;
   }
   //勾选高级设置中的所有选项。
   form2 f2= new form2(obj);
   f2.Owner = this;
   f2.MdiParent = this;
   MessageBox.Show("恢复了默认设置");
}
----------------------------------------------
上面可以只用new一个checkbox传给form2中所有checked;,不知道还有什么好方面没.跳出这个框架.

解决方案 »

  1.   

    foreach(CheckBox ob in this.Controls)
      

  2.   

    public form2(CheckBox [] check)
    {
    InitializeComponent();
    // this.checkBox1.Checked=check[0].Checked;
    // this.checkBox2.Checked=check[1].Checked;
    foreach(Object ob in this.Controls) //this调用默认构造
    {
    int i=1;
    if(( ob as CheckBox)!= null)
    {
    check[i] = (CheckBox)ob;
    i++;
    }
    }
    }
         谢谢 近身剪的'.' 确实画龙点睛,每天看console,control,就没想到congtrols集.