从另一个表单调用方法

我尝试从另一个表单调用一个方法。 我的尝试:

public partial class newLedPopUp : Form { Form1 back = new Form1(); back.output(); Close(); } 

 public partial class Form1 : Form { newLedPopUp popup = new newLedPopUp(); public void output() { button3_Click(null, null); } } 

有人可以帮我吗? 我真的找不到我的错误,而且我一直在寻找很长一段时间。

您可能需要一个已经打开的窗体的实例,并从那里调用该方法,而不是创build一个新窗体的实例。 你可以试试:

 if (System.Windows.Forms.Application.OpenForms["yourForm"] != null) { (System.Windows.Forms.Application.OpenForms["yourForm"] as Form1).Output(); } 

再加上你可以在你的Output方法中调用button3_Click(null,null) ,方法是把事件的代码放在一个单独的方法中,然后调用该方法来对付你的button点击事件或公共输出方法

调用output方法后立即closuresForm1 。 因此,我假设,您在那里有一些业务相关或数据访问逻辑。 尝试将在button3_Click事件处理程序上执行的代码移动到单独的对象上

 public class Foo { public void Output() { // move here button3_Click code } } 

然后创buildFoo并将其传递给两个表单(或者可以在不dependency injection的情况下在表单中实例化它)

 Foo foo = new Foo(); Form1 form1 = new Form1(foo); LedPopUp form2 = new LedPopUp(foo); 

像这样使用它:

 public partial class Form1 : Form { private Foo _foo; // without dependency injection: private Foo _foo = new Foo(); public Form1(Foo foo) { _foo = foo; } protected void button3_Click(object sender, EventArgs e) { _foo.Output(); } }