首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# ShowDialog调用另一个ShowDialog

C# ShowDialog调用另一个ShowDialog
EN

Stack Overflow用户
提问于 2010-11-02 18:10:03
回答 3查看 5.9K关注 0票数 5

我不确定是否允许这样做,但是我有一个主表单,它用ShowDialog调用另一个表单,它试图调用另一个表单。

因此,例如:

form1 -> form1 2. ->显示对话框

我在form3的显示对话框中发现了一个错误:

代码语言:javascript
复制
var ssscu = new SSS.SssTwainSimple.MainForm();
ssscu.ShowDialog();

这是一个错误:

{“窗体showDialog试图将不合格的窗体设置为其所有者。窗体不能拥有自己或其所有者。\r\n参数名称:所有者”}

我不知道问题出在哪里,难道我不能从一个对话框的形式中调用一个显示对话框吗?

谢谢,Eroc

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-02 18:18:28

我不允许从一个对话框的表单中调用一个显示对话框吗?

你当然被允许了,这应该是可行的。

但我确实觉得奇怪的是,您创建了一个名为MainForm的对话框形式。

我想这是由事件中发生的其他事情引起的。mainForm在它的构造函数/加载事件中做什么?

票数 5
EN

Stack Overflow用户

发布于 2010-11-02 18:43:21

这是一个非常不寻常的例外。表单在构造函数创建时已经有了所有者。您没有使用ShowDialog(所有者)覆盖,所以Windows必须为自己找到一个所有者。它找到了完全相同的形式回来。这在技术上是可能的,但您必须编写一些相当奇怪的代码。要诊断这一点,请将此代码添加到表单中:

代码语言:javascript
复制
    protected override void OnHandleCreated(EventArgs e) {
        base.OnHandleCreated(e);
    }

在上面设置一个断点。如果我的猜测是正确的,这将在ShowDialog调用之前中断。查看调用堆栈,看看是什么语句创建了该窗口。

票数 4
EN

Stack Overflow用户

发布于 2010-11-02 18:12:21

尝试将.ShowDialog();替换为.ShowDialog(this);

编辑:,我还没有试过,但这是我开始寻找的地方。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4080738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档