繁体   English   中英

如何将 MDI 子窗体带到前面?

[英]How to bring MDI Child Form To Front?

概述:

我有一个MDI Parent Form,其中我加载了其他forms。加载第二个表格后,我不能再将第一个放在前面。

描述:

在父窗体上,我有一个包含 2 个菜单项的菜单条; 主页和搜索。 每个点击事件都会加载相应的表单,除非该表单已加载。

问题:

一种。 单击搜索。 然后单击主页。

b. 如果再次单击“搜索”,它不再将其对应的、已打开的表单带到最前面。

    private void tsmHome_Click(object sender, EventArgs e)
    {
        // Loop through all open forms...
        foreach (Form form in Application.OpenForms)
        {
            // If frmHome is Opened, set focus to it and exit subroutine.
            if (form.GetType() == typeof(frmSearch))
            {

                form.Activate();
                return;
            }
        }

        // If frmHome is not Opened, create it. 
        frmHome f = new frmHome();
        f.MdiParent = this;
        f.Show();
    }

    private void tsmSearch_Click(object sender, EventArgs e)
    {
        // Loop through all open forms...
        foreach (Form form in Application.OpenForms)
        {
            // If frmSearch is Opened, set focus to it and exit subroutine.
            if (form.GetType() == typeof(frmSearch))
            {

                form.Activate();
                return;
            }
        }

        // If frmSearch is not Opened, create it. 
        frmSearch f = new frmSearch();
        f.MdiParent = this;
        f.Show();
    }

您的代码正在为我工​​作..在您的tsmHome_Click事件处理程序中更改一行后

你有过。

if (form.GetType() == typeof(frmSearch))

它应该是。

if (form.GetType() == typeof(frmHome))

看起来像复制粘贴错误让你。

您可以尝试以下几种选择:

f.TopMost = true;
f.BringToFront();

此外,您可以在对话框模式下打开窗口:

f.ShowDialog();

希望这会有所帮助。 最好的祝福,

您可以将代码更改为此,如果表单存在,请将其置于最前面。

   // Loop through all open forms...
    foreach (Form form in Application.OpenForms)
    {
        // If frmSearch is Opened, set focus to it and exit subroutine.
        if (form.GetType() == typeof(frmSearch))
        {

            form.Activate();
            form.BringToFront();
            //form.WindowState = FormWindowState.Maximized;
            return;
        }
    }

    // If frmSearch is not Opened, create it. 
    frmSearch f = new frmSearch();
    f.MdiParent = this;
    f.Show();
foreach (Form form in System.Windows.Forms.Application.OpenForms)
{                
    if (form.GetType() == typeof(Tviewer))
    {       
        form.WindowState = FormWindowState.Minimized;                     
        form.WindowState = FormWindowState.Normal;
        return;
    }
}

//它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM