我在我的应用程序中放置了一个MDI表单。如果我从文件菜单中选择一个选项,因为New我将加载一个子表单。
我的代码如下所示,以显示子表单
private void ShowNewForm(object sender, EventArgs e)
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Text == "Main")
{
IsOpen = true;
frm.Focus();
break;
}
}
if (IsOpen == false)
{
Form childForm = new FrmMain();
childForm.MdiParent = this;
childForm.Show();
}
}
现在我需要的是当子表单处于活动状态时我希望我的MDI处于非活动状态,直到用户关闭子表单为止。
一般来说,我们会写表格
frm.showDialog()
那么如何解决这个问题
答案 0 :(得分:3)
这样给出
if (IsOpen == false)
{
Form childForm = new FrmMain();
childForm.TopLevel=true;
childForm.ShowInTaskbar=false;
childForm.ShowDialog();
}
答案 1 :(得分:2)
这是关于MDI的基础,儿童形式不能成为模态。您有使用ShowDialog()并确保您没有设置MdiParent属性。这样的对话框不受MDI父级边界的约束,您可以使用StartPosition属性使其居中。像这样:
using (var dlg = new Form2()) {
dlg.StartPosition = FormStartPosition.CenterParent;
if (dlg.ShowDialog(this) == DialogResult.OK) {
// Use dialog properties
//...
}
}
当然,您不必再检查表单是否已存在,它是模态的。