C# c调用一个窗体中的类函数以从

C# c调用一个窗体中的类函数以从,c#,winforms,forms,datagridview,C#,Winforms,Forms,Datagridview,我在我的c项目中创建了两个windows窗体和一个类,我有两个DataGridView——一个在窗体1中,另一个在窗体2中,名称相同,但内容不同。我创建了一个名为Sqlfunctions的类,并在该类中创建了一个名为Refresh1和Refresh2的SqlConnection和2方法。我可以使用这些方法中的每一种,从这两行中得到尊重。 表格一 表格二 Sqlfunctions.Refresh2(this.dataGridView1); 但是我需要在表单2中调用Sqlfunctions.Ref

我在我的c项目中创建了两个windows窗体和一个类,我有两个DataGridView——一个在窗体1中,另一个在窗体2中,名称相同,但内容不同。我创建了一个名为Sqlfunctions的类,并在该类中创建了一个名为Refresh1和Refresh2的SqlConnection和2方法。我可以使用这些方法中的每一种,从这两行中得到尊重。 表格一

表格二

Sqlfunctions.Refresh2(this.dataGridView1);
但是我需要在表单2中调用Sqlfunctions.Refreshthis.dataGridView1来更新表单1中的dataGridView1。如何在一个窗体中调用类方法来更新另一个窗体。或者,在关闭表单2时,如何调用表单1中的Sqlfunctions.Refreshthis.dataGridView1

详情如下:

我用表单1中的按钮打开表单2,并在表单2中更新dateGridView。当这种情况发生时,我也想在表单1中更新dateGridView。因为表单2和1中的dategridview使用相同的 数据库。我可以通过调用这个类函数来更新表单1中的datagridview。Sqlfunctions.Refreshthis.dataGridView1;但是我不知道如何在表单2中调用这个类函数来更改表单1中的datagridview。甚至在关闭表单2时,如何在表单1中运行此方法。这两种方法都会使表单1中的datagridview更新。请帮帮我。我卡住了

当我在表单2中时,我知道如何从表单1调用方法。但问题是我的方法不在fomr 1中。它位于一个名为Sqlfunctions的类中

我用表格1中的按钮打开表格2

打开Form1时将其设置为Form2的所有者,如下所示:

Form2 f2 = new Form2();
f2.Show(this);
现在在Form2中,您可以将Owner属性强制转换为Form1类型并使用它:

// ... from within Form2 ...
Form1 f1 = (Form1)this.Owner;
Sqlfunctions.Refresh(f1.dataGridView1);

但您需要在Form1中选择dataGridView1,并将其Modifiers属性更改为Public,才能使其生效。

如果我理解正确,您想知道,1如果Form2\u关闭事件期间未打开Form1,如何从Form2打开Form1?2如何将此.dataGridView1,即Form1.dataGridView1作为参数传递给Form2中的刷新方法。请添加更多代码来说明您的问题。我更新了上面的帖子。请再读一遍。我只需要在from 2中调用一个类函数来更新表单1中的datagridview。我可以像下面这样在表单1中调用该类:Sqlfunctions.refreshtthis.dataGridView1;并更新datagridview。但是我不知道如何在表单2中调用它来更新表单1中的dateridview。原因当表单2中的datagridview在表单1中成为更新时,希望表单1中的datagridview在表单1中成为更新。至于我如何/应该从一个表单调用另一个表单中的方法:为另一个表单提供公共函数封装,然后在该函数中使用Control.Invoke。否则,如果您试图从不拥有该表单的线程操作表单上的数据,您可能会遇到错误。它成功了。谢谢。我的问题已经解决了。谢谢你的努力和时间。很高兴这有帮助。如果问题已解决,请单击此答案旁边的复选标记,以便其他人知道问题已结束。
// ... from within Form2 ...
Form1 f1 = (Form1)this.Owner;
Sqlfunctions.Refresh(f1.dataGridView1);