C#从另一个表单调用方法

时间:2011-04-21 11:44:53

标签: c# .net winforms oop forms

您好 我有2 Form Form1和Form2

Form1有一个表,有我的记录,并且有一个Void用于刷新Form1中的表。

Form2是我的插入表单我是插入数据到sqlserver.I想要的是当我在Form2中保存记录后运行Form1刷新无效。(当Form1,Form2打开时)

感谢。

4 个答案:

答案 0 :(得分:5)

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();

答案 1 :(得分:0)

在Form1中,当您打开Form2时,请附加到Form2 OnClose/Closed事件或自定义Save事件,该事件在引发时会刷新表单1中的表格。

答案 2 :(得分:0)

调整Form2的构造,使其需要一个额外的参数,如下所示:

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

您应该考虑查看Interfaces,以便分开关注。接口对很多东西都很有用!

答案 3 :(得分:0)

尝试从另一种形式调用方法:

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