我不确定这是否被允许,但我有一个主窗体调用另一个窗体与ShowDialog尝试调用另一个窗体相同。
例如:
form1 -〉form2。showdialog -〉form3.显示对话框
我在form 3的showdialog中得到一个错误:
var ssscu = new SSS.SssTwainSimple.MainForm();
ssscu.ShowDialog();
这就是错误:
{“窗体showDialog尝试将不合格的窗体设置为其所有者。表单不能拥有自己或其所有者。\r\n参数名称:所有者”}
我不确定我是否理解了问题所在,是不是不允许从一个对话框窗体调用showdialog?
谢了,艾罗克
3条答案
按热度按时间qvtsj1bj1#
我不能从一个对话框的窗体调用showdialog吗?
你当然被允许了,这应该能起作用。
但我确实认为创建一个名为MainForm的对话框表单很奇怪。
我认为这是由事件中发生的其他事情引起的。mainForm在它的构造函数/Load-event中做什么?
wlp8pajw2#
这是一个非常不寻常的例外。构造函数创建窗体时,窗体已经有了所有者。您没有使用ShowDialog(owner)重写,因此Windows窗体必须为自己查找所有者。它会找到完全相同的形式。这在技术上是可行的,但是你必须编写一些相当奇怪的代码。要诊断此问题,请将以下代码添加到表单:
并在其上设置断点。如果我的猜测是正确的,这将在ShowDialog调用之前中断。查看调用堆栈,以查看创建该窗口的语句。
dfddblmv3#
尝试将
.ShowDialog();
替换为.ShowDialog(this);