C# 如何从另一个窗体调用方法?
我的dataGridView格式为1。我在表单2中有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();
UpdateForm
方法。我在dataGridview Form1中有一个Click事件,它加载到Form2UpdateForm
。但当我在更新后关闭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
内部)?请注意,这将导致错误。