当显示子窗口时,父窗口被最小化
本文关键字:窗口 最小化 显示 | 更新日期: 2023-09-27 17:54:37
是否有可能使子窗口打开时,父窗口最小化并且不活动(子窗口是模态)?在调用子窗口之前,我尝试将父窗口的WindowState属性更改为最小化,但随后子窗口开始最小化。
不知道为什么要这样做,但这可以通过一些技巧(或良好的设计模式)来实现。通过欺骗,你可以这样做:
From parent (form1):
private void button1_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
new Form2().ShowDialog(this);
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
}
尽管如此,我还是建议您重新考虑您的架构。
你的设计有缺陷。
你有两个顶级的窗口,主窗体和子模式对话框。在Win32术语中,子模态对话框被称为自有窗口。主要形式是非自有的。最小化顶层非所有窗口时,它所拥有的所有窗口都将被隐藏。这是由桌面窗口管理器提供的功能。
文档说明:
被拥有的窗口被隐藏时所有者最小化。
你想做的事情听起来很不寻常。通常,当表单显示模态对话框时,模态对话框会显示在另一个表单的顶部。为什么要隐藏主表单?
如果你在这个设计上是死定的,你需要安排你的模态对话框是一个非拥有的窗口。这样做时,它将显示为任务栏中与主表单分开的项目。这是你想要的吗?
在子form_Load事件中,尝试如下:
frmParent frm = new frmParent();
frm.WindowState = FormWindowState.Minimized;