我在Winforms App中有两个表单类(Form1和Form2)。
Form1是这样的:
Form2是这样的(ShowInTaskbar = false):
这个代码在Form1上:
Form2 someForm = new Form2();
private void btOpenAnotherWindow_Click(object sender, EventArgs e)
{
if (someForm.ShowDialog(this) == DialogResult.OK)
MessageBox.Show("OK!!!");
else
MessageBox.Show("Not OK.");
}
也就是说,一个带有按钮的窗口,在单击时打开模态其他窗口,并等待用户关闭第二个窗口(通过单击“确定”或“取消”按钮)。并根据它是如何关闭的,执行交替操作(此处由MessageBox.Show()调用表示。)
我需要:
以上示例以两种方式失败:
点击最小化前按钮:
在:
注意:
Form2是一个完整的窗口(本身不是一个对话框窗口),我需要用户与它进行交互,直到它关闭,我还需要用户能够在需要时将整个应用程序分解为miminize
遗憾的是我无法在这里发布真实的形式,这比这些模型更清晰。
我需要一个适用于多级模态窗口的解决方案(不仅如本例所示,还有两个)。有什么建议吗?
答案 0 :(得分:1)
我可能需要更多关于您在这里尝试做什么的信息。我有一个简单的表单(Form1),上面有一个按钮,调用此代码:
private void button1_Click(object sender, EventArgs e)
{
Form1 form2 = new Form1();
form2.ShowDialog();
}
当我点击按钮时,我得到了同一个表单的第二个实例,但它是模态的。我仍然可以选择最小化第二个模态形式(我显然不能与第一个形式交互),当我最小化第二个形式时,它确实最小化了整个应用程序(两种形式)。现在显然你在问这个问题,所以我不认为我理解你。 =)你希望改变这种情况怎么样?
答案 1 :(得分:0)
可能有一些方法可以使用API调用来破解这个功能,但我可能会建议在主窗体中使用控件而不是实际窗口进行某种类型的叠加。这将允许您将其设置为“模态”,并且仍然能够最小化/调整主窗口的大小。