从另一个表单调用方法
我尝试从另一个表单调用一个方法。 我的尝试:
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(); } }