WinForms 中表单的 Z 顺序 [英] Z-Order of Forms in WinForms

查看:26
本文介绍了WinForms 中表单的 Z 顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下 5 个表格:

I have 5 forms as following:

  • Form1
  • Form2
  • Form3
  • Form4
  • Form5

Form1 是我的启动表单.我在这个表单中有 4 个按钮来显示其他表单(form2、form3、form4、form5).我想在 form1 后面显示其他表单,然后当我最小化 form1 时,其他表单也被最小化当我恢复 form1 时,其他表单也恢复了.但是 form1 总是在其他表单的顶部.

Form1 is my startup form.i have 4 button in this form to show other forms(form2,form3,form4,form5).I want show other forms behind of the form1, then when i minimize form1 ,other forms minimized too and when i restore form1 other forms restored too.However form1 always is top of other forms.

我该如何实施?

推荐答案

以你的最佳形式试试这个.

Try this in your top form.

private List<Form> subForms;
private bool minimized = false;

public TopForm()
{
    InitializeComponent();
    subForms = new List<Form>();
    subForms.Add(new SubForm(1));
    subForms.Add(new SubForm(2));
    subForms.Add(new SubForm(3));
    subForms.Add(new SubForm(4));
    subForms.Add(new SubForm(5));

    foreach (Form f in subForms)
    {
        f.Show();
    }

    BringToFront();
    Resize += OnResize;
}

/// <summary>
/// Detects a resize event and handles it according to window state.
/// </summary>
/// <param name="sender">Top form</param>
/// <param name="args">Unused</param>
private void OnResize(object sender, EventArgs args)
{
    switch (WindowState)
    {
    case FormWindowState.Normal:
        if (minimized)
        {
            minimized = false;
            OnRestore();
        }
        break;
    case FormWindowState.Minimized:
        minimized = true;
        OnMinimize();
        break;
    }
}

/// <summary>
/// Minimize all sub forms
/// </summary>
public void OnMinimize()
{
    foreach (Form form in subForms)
    {
        form.WindowState = FormWindowState.Minimized;
    }
}

/// <summary>
/// Restore all forms and bring them to the front, with this main form on top.
/// </summary>
public void OnRestore()
{
    foreach (Form form in subForms)
    {
        form.WindowState = FormWindowState.Normal;
        form.BringToFront();
    }
    BringToFront();
}

这篇关于WinForms 中表单的 Z 顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆