C#子窗体调用主窗体方法改变控件状态(架构)

今天写程序时遇到一个看起来很简单的问题,结果却很坑,问题时这样的,在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();

        }

你可能感兴趣的:(C#子窗体调用主窗体方法改变控件状态(架构))