不是顶级表单的表单不能显示为模式对话框。在调用showDialog

时间:2017-04-17 05:22:09

标签: c# forms winforms showdialog

在我的项目中,我曾经使用“ShowDialog()”方法将Form显示为对话框。但它抛出异常

“不是顶级表单的表单不能显示为模式对话框。在调用showDialog之前从任何父表单中删除表单。”

Form frm = new Form();
frm.ShowDialog();

请告诉我这个例外的原因。有可能吗?

感谢。

2 个答案:

答案 0 :(得分:2)

如果您使用MDIForm是子表单,则错误告诉您子表单不是需要与父表单交互的顶级表单。 “模态形式意味着必须先关闭或隐藏它才能继续使用其余的应用程序”。这就是为什么使用ShowDialog()会出现此错误以及@ S.Petrosov的答案出现在哪里以及您应该在哪里使用Show()

答案 1 :(得分:0)

您需要将所有者Form传递给Form.ShowDialog。如下图所示:

public void ShowMyDialogBox()
{
    Form2 testDialog = new Form2();

    // Show testDialog as a modal dialog and determine if DialogResult = OK.
    if (testDialog.ShowDialog(this) == DialogResult.OK)
    {
    // Read the contents of testDialog's TextBox.
    this.txtResult.Text = testDialog.TextBox1.Text;
    }
    else
    {
        this.txtResult.Text = "Cancelled";
    }
    testDialog.Dispose();
}