代码之家  ›  专栏  ›  技术社区  ›  ErocM

C 35; ShowDialog调用另一个ShowDialog

  •  4
  • ErocM  · 技术社区  · 15 年前

    例如:

    我在窗体3的showdialog中遇到错误:

    var ssscu = new SSS.SssTwainSimple.MainForm();
    ssscu.ShowDialog();
    

    这是错误:

    不合格的形式作为其所有者。形式 所有者。\r\n参数名称:owner“}

    我不确定我是否理解问题所在,是否不允许从对话窗体调用showdialog?

    爱乐

    3 回复  |  直到 15 年前
        1
  •  5
  •   Henk Holterman    15 年前

    不允许我从对话窗体调用showdialog吗?

    你当然可以,这应该管用。

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

        2
  •  3
  •   Albin Sunnanbo    15 年前

    .ShowDialog(); 具有 .ShowDialog(this);

    编辑:

        3
  •  3
  •   Hans Passant    15 年前

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

        protected override void OnHandleCreated(EventArgs e) {
            base.OnHandleCreated(e);
        }
    

    并在其上设置断点。如果我的猜测是正确的,这将打破 之前 ShowDialog调用。查看调用堆栈以查看创建该窗口的语句。