我不确定是否允许这样做,但是我有一个主表单,它用ShowDialog调用另一个表单,它试图调用另一个表单。
因此,例如:
form1 -> form1 2. ->显示对话框
我在form3的显示对话框中发现了一个错误:
var ssscu = new SSS.SssTwainSimple.MainForm();
ssscu.ShowDialog();这是一个错误:
{“窗体showDialog试图将不合格的窗体设置为其所有者。窗体不能拥有自己或其所有者。\r\n参数名称:所有者”}
我不知道问题出在哪里,难道我不能从一个对话框的形式中调用一个显示对话框吗?
谢谢,Eroc
发布于 2010-11-02 18:18:28
我不允许从一个对话框的表单中调用一个显示对话框吗?
你当然被允许了,这应该是可行的。
但我确实觉得奇怪的是,您创建了一个名为MainForm的对话框形式。
我想这是由事件中发生的其他事情引起的。mainForm在它的构造函数/加载事件中做什么?
发布于 2010-11-02 18:43:21
这是一个非常不寻常的例外。表单在构造函数创建时已经有了所有者。您没有使用ShowDialog(所有者)覆盖,所以Windows必须为自己找到一个所有者。它找到了完全相同的形式回来。这在技术上是可能的,但您必须编写一些相当奇怪的代码。要诊断这一点,请将此代码添加到表单中:
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
}在上面设置一个断点。如果我的猜测是正确的,这将在ShowDialog调用之前中断。查看调用堆栈,看看是什么语句创建了该窗口。
发布于 2010-11-02 18:12:21
尝试将.ShowDialog();替换为.ShowDialog(this);
编辑:,我还没有试过,但这是我开始寻找的地方。
https://stackoverflow.com/questions/4080738
复制相似问题