是否可以在打开子窗口时使父窗口最小化并且处于非活动状态(子窗口是模态的)? 我尝试在调用子窗口之前将WindowState属性更改为父窗口的最小化,但随后子窗口开始最小化。
答案 0 :(得分:2)
不确定为什么要这样做,但这可以用一些技巧(或好的设计模式)来实现。有了技巧,你可以这样做:
来自父(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;
}
虽然,我建议您重新考虑您的体系结构。
答案 1 :(得分:0)
您的设计存在缺陷。
您有两个顶级Windows,主窗体和子模式对话框。子模式对话框在Win32术语中称为拥有窗口。主要形式是非拥有的。当顶级非独占窗口最小化时,它拥有的所有窗口都被隐藏。这是桌面窗口管理器提供的功能。
拥有的窗口在隐藏时隐藏 所有者被最小化。
无论如何,你要做的事情听起来很不寻常。通常,当表单显示模式对话框时,模态对话框显示在另一个表单的顶部。你为什么要隐藏主表格?
如果你对这个设计不熟悉,你需要安排你的模态对话框是一个非拥有的窗口。执行此操作时,它将显示为任务栏中与主窗体分开的项目。这是你想要的吗?
答案 2 :(得分:-1)
在子form_Load事件中,请尝试:
frmParent frm = new frmParent();
frm.WindowState = FormWindowState.Minimized;