C# 如何从另一个窗体调用方法?

C# 如何从另一个窗体调用方法?,c#,.net,winforms,C#,.net,Winforms,我的dataGridView格式为1。我在表单2中有UpdateForm方法。我在dataGridview Form1中有一个Click事件,它加载到Form2UpdateForm。但当我在更新后关闭Form2时,dataGridview Form1仍然显示旧信息。我必须重新加载Form1才能看到我所做的更改。我的问题是,我想看到我在关闭Form2后直接进行的更改 我试着如下: 表格一 Public void RealoadForm() { dataGridView1.Update();

我的dataGridView格式为1。我在表单2中有
UpdateForm
方法。我在dataGridview Form1中有一个Click事件,它加载到Form2
UpdateForm
。但当我在更新后关闭Form2时,dataGridview Form1仍然显示旧信息。我必须重新加载Form1才能看到我所做的更改。我的问题是,我想看到我在关闭Form2后直接进行的更改

我试着如下: 表格一

Public void RealoadForm()
{
    dataGridView1.Update();
    RealoadForm();
    this.Refresh();
} 
然后在Form2更新按钮中,甚至在
FormClosed
中尝试:

 Form1 frm = new Form1();
 frm.RealoadForm();

但仍然不工作。

您可以更改格式Applied=true;在OnCellFormatting事件中

OnCellFormatting(对象发送方、DataGridViewCellFormattingEventArgs e)
{
e、 FormattingApplied=true;

}

只需创建重新加载dataGridview的公共方法。将信息加载到dataGridview并从Form2调用它的方法如下:

 Form1 form = Application.OpenForms.OfType<Form1>().FirstOrDefault();
  if(form != null)
  {
     form.YourLoadMethode();
  }
Form1 form=Application.OpenForms.OfType().FirstOrDefault();
if(form!=null)
{
form.YourLoadMethode();
}

再次阅读这一行
Form1 frm=**NEW**Form1()。您基本上是在创建
Form1
的新实例,然后调用
RealoadForm
,这对现有表单没有影响。如果您正在使用Form1中的方法加载/显示Form2,请尝试类似于
YourForm2Instance.Show(this)的方法
将使Form1的当前实例成为创建的Form2实例的所有者,然后从Form2中,您可以轻松调用
this.owner.RealoadForm()@AhmedAbdelhameed,感谢您的回复。那我该怎么办?我编辑我的评论是为了给你一些指导。我忘记提到的一件事是,您需要强制转换所有者,以便调用
RealoadForm
方法。类似的东西应该可以工作
(Form1)(this.Owner).RealoadForm()。您可以查看代理和事件。点击“关闭”按钮后,刷新表单功能将启动。另外,我刚刚注意到。。。为什么要递归调用
RealoadForm
方法(从
RealoadForm
内部)?请注意,这将导致错误。