在我的项目中,我曾经使用“ShowDialog()”方法将Form显示为对话框。但它抛出异常
“不是顶级表单的表单不能显示为模式对话框。在调用showDialog之前从任何父表单中删除表单。”
Form frm = new Form();
frm.ShowDialog();
请告诉我这个例外的原因。有可能吗?
感谢。
答案 0 :(得分:2)
如果您使用MDI
且Form
是子表单,则错误告诉您子表单不是需要与父表单交互的顶级表单。 “模态形式意味着必须先关闭或隐藏它才能继续使用其余的应用程序”。这就是为什么使用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();
}