我有以下模式.有一个带有按钮的父窗体和一个用于创建子窗体的抽象基类.像ChildForm1
,ChildForm2
这样的多个子窗体将从按下按钮等事件的ParentForm
中产生.这是我当前正在做的事情的简单表示.
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
}
private void Button1_OnClick(object sender, EventArgs e)
{
new ChildForm1(this).Show();
}
// Some other methods
}
public abstract partial class BaseChildForm : Form
{
protected readonly Form _parent;
public BaseChildForm(Form parent)
{
_parent = parent;
InitializeComponent();
}
private void ThisForm_OnAppear(object sender, EventArgs e)
{
// Do some changes in the parent form through _parent field
}
// Some other methods as well
}
public partial class ChildForm1 : BaseChildForm
{
public ChildForm1(Form parent) : base(parent){}
// Overridden abstract methods and other methods
// Do some tampering with the parent form
}
public partial class ChildForm2 : BaseChildForm
{
public ChildForm2(Form parent) : base(parent){}
// Overridden abstract methods and other methods
// Do some tampering with the parent form
}
在这段代码中,我实际上希望在子窗体中执行某些操作时访问和控制ParentForm
的行为和其他属性.但正如你所看到的,ParentForm
名公众成员完全接触到了 children 表格.此外,当多个ChildForm
实例在给定时间操作ParentForm
时,这可能是一个问题并导致意外结果.
到目前为止,这个模式对我来说是"gets things done".但我想知道有没有其他更好的方法来满足我的要求?