日期:2014-05-19  浏览次数:20641 次

Winform下算吧,有含金量的题,解了却感觉怪怪的.评评,或许有更高效的
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;,不知道还有什么好方面没.跳出这个框架.




------解决方案--------------------
foreach(CheckBox ob in this.Controls)