public void SetBackColor(string btName,Color BackColor,Color ForeColor,Object myContainer) ////note added a Container Object Parameter// { foreach( Button bt in myContainer.Controls) //note the change { if(bt.Name == btName) { bt.BackColor=BackColor; bt.ForeColor=ForeColor; } } }
invoke : ----------------- Form1 form1=new Form1(); Color BackColor=Color.Red; Color ForeColor=Color.White; //note pass the form1 object into form1.SetBackColor("1209",BackColor,ForeColor,from1);
foreach( Button bt in this.Q_KeFang.Controls)你是在form1中执行的,所以它只会对form1中的Button进行了设置
同意楼上的说法
如下修改看看foreach( Control c in this.Q_KeFang.Controls)
{
if(c is Button)
if(c.Name == btName)
{
c.BackColor=BackColor;
c.ForeColor=ForeColor;
}
}
{
foreach( Button bt in this.Q_KeFang.Controls)
{
if(bt.Name == btName)
{
bt.BackColor=BackColor;
bt.ForeColor=ForeColor;
}
}
}要对bt重新付值才行。bt.Name == btName
{
foreach( Button bt in myContainer.Controls) //note the change
{
if(bt.Name == btName)
{
bt.BackColor=BackColor;
bt.ForeColor=ForeColor;
}
}
}
-----------------
Form1 form1=new Form1();
Color BackColor=Color.Red;
Color ForeColor=Color.White;
//note pass the form1 object into
form1.SetBackColor("1209",BackColor,ForeColor,from1);