[英]Call a method from another form
我嘗試從另一種形式調用方法。 我的嘗試:
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);
}
}
有人能幫助我嗎? 我真的找不到我的錯誤,而且我一直在尋找很長一段時間。
您可能需要一個已打開表單的實例,並從那里調用該方法,而不是創建新表單的實例。 你可以試試:
if (System.Windows.Forms.Application.OpenForms["yourForm"] != null)
{
(System.Windows.Forms.Application.OpenForms["yourForm"] as Form1).Output();
}
另外,您可以在Output
方法中調用button3_Click(null,null)
,方法是將事件代碼放在單獨的方法中,然后針對按鈕單擊事件或公共輸出方法調用該方法
您在調用output
方法后立即關閉Form1
。 因此,我假設您在那里有一些與業務相關或數據訪問的邏輯。 嘗試將在button3_Click
事件處理程序上執行的代碼移動到單獨的對象
public class Foo
{
public void Output()
{
// move here button3_Click code
}
}
然后創建Foo並將其傳遞給兩個表單(或者您可以在沒有依賴注入的表單中實例化它)
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.