簡體   English   中英

C#從另一個窗體調用方法

[英]C# Calling a method from another Form

嗨,我有2個表格Form1和Form2

Form1有一個表,有我的記錄,並且在Form1中有一個Void用於刷新表。

Form2是我的插入表單,我是將數據插入sqlserver。我想要在將記錄保存到Form2中以運行Form1時刷新。(當Form1,Form2打開時)

謝謝。

Form2將必須具有對Form1實例的引用。 單擊插入按鈕時,可以將此引用傳遞給Form2:

Form2 insertForm = new Form2();
//Form2.ShowDialog(Me); - Correction - 'Me' is for VB. in C# it's:
Form2.ShowDialog(this);

接下來在Form2上,您可以像這樣訪問Form1:

(Form1)this.Parent.RefreshTable();

試試這個從另一種形式調用方法:

if (System.Windows.Forms.Application.OpenForms["ParentFormName"] != null)
    {
        (System.Windows.Forms.Application.OpenForms["ParentFormName"] as   ParentFormName).MethodName(args);
    }

在Form1中,當您打開Form2時,附加到Form2 OnClose/Closed事件或自定義Save事件,該事件在引發時將刷新表單1中的表。

調整Form2的構造,使其采用額外的參數,如下所示:

...
private Form1 mainWindow;
public Form2(Form1 mainWindow)
{
   this.mainWindow = mainWindow;
}
...
public void HaveSavedSql()
{
   this.mainWindow.RefreshAll();
}

但是,您應該考慮查找接口,以便您可以分開關注。 接口對很多事情都有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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