为什么windowstates彼此相对?

时间:2016-11-14 10:19:04

标签: c# winforms mdichild windowstate


我的Windows窗体应用程序中有3个表单。
1。是主要形式,它是mdiParent。
2。是一个mdiChild形式,将以最大化状态显示。
3。是另一个将以正常状态显示的mdiChild。

当我打开form2时,它会以最大化状态显示,但问题是当我同时打开form3时,form3也会以最大化状态显示,当我更改状态时form3在运行时手动恢复正常状态(恢复窗口)form2也恢复正常状态。换句话说:他们的状态是相对的。
有一部分代码在form3代码中打开form2

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    string str = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
    string str3 = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
    var str2 = dataGridView1.SelectedRows[0].Cells[0].Value ;
    Forms.frmTrack frm = new frmTrack();
    frm.CustomerID = (int)str2;
    frm.CompanyName = str;
    frm.CustomerName = str3;
    Classes.Function fn = new Classes.Function();
    frm.WindowState = FormWindowState.Normal;
    fn.ShowForm(frm, this.MdiParent);
    frm.WindowState = FormWindowState.Normal;
}

这是我的ShowForm()函数:

public void ShowForm(Form frmChild,Form frmParent)
{
    bool formFound = false;
    foreach (Form item in frmParent.MdiChildren)
    {
        if (item.Name == frmChild.Name)
        {
            item.Activate();

            formFound = true;
        }

    }
    if (!formFound)
    {
        frmChild.MdiParent = frmParent;
        frmChild.Show();
    }
}

0 个答案:

没有答案