从Form2访问Form1控件

时间:2013-04-08 05:24:34

标签: winforms

有两种形式 - Form1& Form2.Form1有一个按钮(btnNew),单击时打开Form2,并被禁用。我需要再次启用该按钮,仅当Form2关闭时。用户还需要同时使用Form1。此代码不再启用该按钮。我想念的地方。

在Form1中:

private void btnNew_Click_1(object sender, EventArgs e)
  {   
    Form2 f2 = new Form2();
    f2.Show();
    btnNew.Enabled = false;
  }   
public void EnableButton()
 {
    btnNew.Enabled = true;
 }

在Form2中:

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
  {
    Form1 f1 = new Form1();
    f1.EnableButton();
  }

2 个答案:

答案 0 :(得分:1)

您的代码会创建一个新的Form1,它将与您在应用程序中运行的Form1不同。

您可以尝试在Form2中添加对Form1的引用,并以此方式对其进行操作。

为form2提供如下属性:

public Form ParentForm {get; set;}

在按钮点击中分配form1:

Form2 f2 = new Form2()
f2.ParentForm = this;
f2.show();

然后在你的结束时,你应该可以做类似的事情:

this.ParentForm.EnableButton();

答案 1 :(得分:0)

从正在实例化它的类(Form2)内订阅您的Form1结束事件。

private void btnNew_Click_1(object sender, EventArgs e)
  {   
    Form2 f2 = new Form2();
    f2.Closing += f2_Closing;
    f2.Show();
    btnNew.Enabled = false;

  }   

public void f2_Closing(object sender, FormClosingEventArgs e)
{
   this.EnableButton();
}

public void EnableButton()
 {
    btnNew.Enabled = true;
 }