MDI窗体上的C#菜单栏如何通过按钮和菜单栏显示子窗体?

时间:2018-06-20 06:28:05

标签: c# menustrip

我有一个MDIFormfrmMain)和2个Child FormfrmInputfrmOutput)。在frmMain上有一个menustrip(2个toolstripmenuitems(输入项和输出项))。 现在,当我运行程序时,单击toolstripmenuitems-输入,显示格式frmInput,然后单击frmInput中的按钮进行一些计算。完成此计算后,将显示frmOutput。 但是现在有一个问题,当计算完成frmOutput显示时,这个frmOutput不在MDIForm内部。那就是独立形式。因此,当我单击toolstripmenuitems-输出时,再次显示frmOutput,但此表单位于MDIForm中。我已经检查表格是否已经打开。但是frmOutput frminput's显示的第一个button不会输入此检查。仅当我单击toolstripmenuitems-输出时,代码才会检查表单是否打开。 下面的MDIForm代码

    public bool HaveNotOpened(Form frm_Parent, string frm_child)
    {

        bool bReturn = true;
        for (int i = 0; i < frm_Parent.MdiChildren.Length; i++)
        {
            if (frm_Parent.MdiChildren[i].Name == frm_child)
            {
                frm_Parent.MdiChildren[i].BringToFront();
                frm_Parent.MdiChildren[i].WindowState = fws;
                bReturn = false;
                break;
            }
        }
        return bReturn;
    }
private void inputToolStripMenuItem_Click(object sender, EventArgs e)
    {
        frmInput fInput = new frmInput(this);
        if (HaveNotOpened(this, "frmInput"))
        {
            fInput.MdiParent = this;
            fInput.Show();
        }
    }

    public void outpuToolStripMenuItem_Click(object sender, EventArgs e)
    {
        frmOutput output = new frmOutput();
        if (HaveNotOpened(this, "frmOutput"))
        {
            output.MdiParent = this;
            output.Show();
        }

    }

frmInput代码:

    private frmOutput f2 = null;
    private frmMain f1 = null;

    public frmInput(frmMain f1)
    {
        f1 = new frmMain();
        f2 = new frmOutput();
        InitializeComponent();
    }

    private async void btnRun_Click(object sender, EventArgs e)
    {
              // Calcuation   
         f2.MdiParent = f1;                
            f2.Show(); 

    }

0 个答案:

没有答案