我需要在我的一个子表单事件中重新加载 Mdi Parent 表单。
我使用了下面的代码,但它不起作用
//Child form even
private void btnChange_Click(object sender, EventArgs e)
{
this.ParentForm.Refresh();
}
有什么解决方案请任何人建议我。
1) 您必须确保 MDI 父窗体的属性IsMdiContainer
设置为true
。
2)您必须确保子窗体的MdiParent
属性设置为父窗体:
ChildForm child = new ChildForm();
child.MdiParent = this;
child.Show();
3)然后您可以从具有以下MdiParent
属性的子级访问 MDI 父级:
this.MdiParent.Refresh(); // or this.MdiParent.Invalidate();
如果您只想执行Load
父表单的事件主体,您应该重新设计您的类以允许多次调用代码。
例如,假设您有一个名为Form1
.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
InitializeFormData();
}
public void InitializeFormData()
{
// do the initialization
}
}
InitializeFormData
现在您可以轻松地在任何子窗体上调用该方法:
((Form1)this.MdiParent).InitializeFormData();
在父表单中使用以下代码重新绘制 UI,
this.Controls.Clear();
this.InitializeComponent();