如何让一个孩子为两个不同的父母工作?
谢谢!
public partial class EditUser : Form
{
AdminStartMenu pf;
TeacherStartMenu tp;
public bool first = true;
public int st = 0;
public bool Editting;
public bool Adding;
public bool Viewing;
public bool AdminParent;
public bool TeacherParent;
public EditUser()
{
InitializeComponent();
}
public EditUser(AdminStartMenu Parent)
{
pf = Parent;
InitializeComponent();
EditFunction();
if (pf.Adding == true)
{
BlankForm();
SaveButton.Text = "Save";
}
if (pf.Editting == true)
{
FillFormVariables();
SaveButton.Text = "Save";
}
}
public EditUser(TeacherStartMenu TParent)
{
tp = TParent;
InitializeComponent();
EditFunction();
if (tp.Adding == true)
{
BlankForm();
SaveButton.Text = "Save";
}
if (tp.Editting == true)
{
FillFormVariables();
SaveButton.Text = "Save";
}
}
答案 0 :(得分:0)
虽然Hasan在两者之间的关系过多是正确的,但是你可以简化一个表单来调用另一个表单,但是无论用户类型如何都可以放置常见的东西......也许就像使用Interface来分类你的StartMenus一样。我看到它们有共同的元素,所以我宣布了一个界面,例如:
public interface IMyCommonParent
{
bool Adding { get; set; }
bool Editing { get; set; }
bool Viewing { get; set; }
}
public class AdminStartMenu : DerivedFromSomeOtherClass, IMyCommonParent
{ // being associated with IMyCommonParent, this class MUST have a declaration
// of the "Adding", "Editing", "Viewing" boolean elements
}
public class TeacherStartMenu : DerivedFromSomeOtherClass, IMyCommonParent
{ // same here }
它们都支持“IMyCommonParent”接口,您的子表单可以接受支持该接口的任何对象。然后,您不必具体了解哪个用于启动子表单,并且可以将其保留为表单的属性
public class ChildForm : Form
{
private IMyCommonParent whichMenu
private bool IsAdminMode;
public ChildForm(IMyCommonParent UnknownParent)
{
whichMenu = UnknownParent;
// then a flag to internally detect if admin mode or not based on
// the ACTUAL class passed in specifically being the admin parent instance
IsAdminMode = ( UnknownParent is AdminStartMenu );
// the rest is now generic.
InitializeComponent();
EditFunction();
if( whichMenu.Adding )
BlankForm();
else if( whichMenu.Editing )
FillFormVariables();
SaveButton.Text = "Save";
}
}