簡體   English   中英

從另一個表單調用方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM