表格不最小化父表格的父表格最小化

时间:2014-12-23 13:15:22

标签: c# winforms

表格(F1)不最小化父表格(F2)的父表格(F3)何时最小化。

虽然家长正在最小化

F3是F2的母体形式,F2是F1的母体形式。

现在当最小化F3时,F2会自动最小化,但F1仍处于最佳状态。

1 个答案:

答案 0 :(得分:0)

您需要使用相同的所有者打开整个链。如果您最小化所有者,那么所有拥有的表单将最小化。

    private void button1_Click(object sender, EventArgs e)
    {
        new Form1().Show(Owner == null ? this : Owner);
    }

这种方法的问题在于关闭“中间”。窗口,不会因为它有另一个所有者而最小化最后一个子窗口。

打开这样的表格

    private void button1_Click(object sender, EventArgs e)
    {
        new Form1().Show(this);
    }

将使每个表格关闭其拥有的形式。 (关闭主窗口不会关闭最后一个孩子) 我猜你想要一切吗?

可以通过

强制执行该行为
    private void button1_Click(object sender, EventArgs e)
    {
        new Form1().Show(this);
    }

    private const int WM_SYSCOMMAND = 0x0112;
    private const int SC_MINIMIZE = 0xF020;

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
    protected override void WndProc(ref Message m)
    {
        switch (m.Msg)
        {
            case WM_SYSCOMMAND:
                int command = m.WParam.ToInt32() & 0xfff0;
                if (command == SC_MINIMIZE)
                {
                    foreach (var frm in OwnedForms)
                    {
                        frm.WindowState = FormWindowState.Minimized;
                    }
                }
                break;
        }
        base.WndProc(ref m);
    }