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)