今天写程序时遇到一个看起来很简单的问题,结果却很坑,问题时这样的,在C#中我们要在子窗体中调用主窗体里的方法改变控件的样式,问题很简单让我们一起来看一下遇到了哪些坑。
主窗体
calss Form1
public void aa()
{
panel.Visible=true;
}
子窗体
calss Form2
Form1 f1 = new Form1();
private void button5_Click(object sender, EventArgs e)
{
this.Close();
f1.aa();
}
正常情况我们都是这样调用,你会发现panel.Visible一直是等于false,aa()方法运行完了却赋值不上。上面这样写是错的啊,因为你new啊,正确要这样写啊
主窗体
calss Form1
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this);
f2 .Show();
}
public void aa()
{
panel.Visible=true;
}
子窗体
calss Form2
//重载构造函数
public Form2(Form1 f1):this()
{
this.f1 = f1;
}
Form1 f1;
private void button5_Click(object sender, EventArgs e)
{
this.Close();
f1.aa();
}