0

さて、私は2人の異なる親から1つのフォームを開こうとしていますが、それを機能させる方法がわかりません。AdminStartMenuとTeacherStartMenuにブール値を使用して、あるものから開く場合はtrueにし、別のものから開く場合はfalseにするようにしましたが、うまくいかないようです。

1人の子供を2人の異なる親のために働かせるにはどうすればよいですか?

ありがとう!

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

1 に答える 1

0

Hasan は 2 つの間で物事を結合しすぎることについては正しいですが、一方のフォームをもう一方のフォームに単純化して、ユーザーのタイプに関係なく共通のものを配置することはできるかもしれません。インターフェースを使用して 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";
   }
}
于 2012-04-26T13:14:00.187 に答える