我不确定是否允许这样做但是我有一个主窗体,它使用ShowDialog调用另一个窗体,它试图调用另一个窗体。
所以,例如:
form1 - > form2.showdialog - > form3.showdialog
我在form3的showdialog中收到错误:
var ssscu = new SSS.SssTwainSimple.MainForm();
ssscu.ShowDialog();
这是错误:
{“表格showDialog试图设置一个 不合格的形式作为其所有者。形式 不能拥有自己或他们自己 所有者。\ r \ n参数名称:所有者“}
我不确定我明白问题是什么,我不能从一个对话形式的表单中调用showdialog吗?
谢谢, Eroc
答案 0 :(得分:5)
我不允许从一个对话框的表单中调用showdialog吗?
你当然是被允许的,这应该有效。
但我确实认为你创建一个名为MainForm的对话框形式很奇怪。
我希望这是事件中发生的其他事情造成的。 mainForm在它的构造函数/ Load-event中做了什么?
答案 1 :(得分:3)
尝试使用.ShowDialog();
.ShowDialog(this);
编辑:我没有尝试过自己,但这是我开始寻找的地方。
答案 2 :(得分:3)
这是一个非常不寻常的例外。表单在构造函数创建时已经拥有了所有者。您没有使用ShowDialog(所有者)覆盖,因此Windows窗体必须为自己查找所有者。它找回完全相同的形式。这在技术上是可行的,但你必须写一些相当奇怪的代码。要诊断此问题,请将此代码添加到表单中:
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
}
并设置断点。如果我的猜测是正确的,这将在 ShowDialog调用之前打破。查看调用堆栈以查看创建该窗口的语句。