从两个父母那里打开一个孩子表格

本文关键字:一个 孩子 表格 父母 两个 那里 | 更新日期: 2023-09-27 18:32:27

好的,我正在尝试打开来自两个不同父母的表格,但我不知道如何让它工作。 我尝试对 AdminStartMenu 和 TeacherStartMenu 使用布尔值,如果从一个打开一个,则使一个为真,从另一个打开一个为假,但这似乎不起作用。

我如何让一个孩子为两个不同的父母工作?

谢谢!

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";
        }
    }

从两个父母那里打开一个孩子表格

尽管 Hasan 关于在两者之间耦合太多是正确的,但您也许可以简化一种形式调用另一种形式,但无论用户类型如何,都放置常见的东西......也许就像使用界面对 StartMenu 进行分类一样。 我看到它们有共同的元素,所以我你声明了一个接口,例如:

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";
   }
}