C# ShowDialog(所有者)隐藏在/未显示,即使我提供所有者IWin32Window

C# ShowDialog(所有者)隐藏在/未显示,即使我提供所有者IWin32Window,c#,.net,winforms,view,krypton-toolkit,C#,.net,Winforms,View,Krypton Toolkit,请不要马上结束这个问题。下面的线程中也讨论了几乎类似的问题 但是,这些并不能解决我的问题。 这个问题从未在我的开发机器中出现过。它发生在用户计算机中,但并不总是如此。事实上,它只发生了3到4次 当这种情况发生时,应用程序/调用表单似乎被冻结。如果我能猜到(因为我没有在屏幕上看到它)关闭按钮的位置并在被调用的表单上单击它,它就会关闭,应用程序会返回到可用状态,直到再次出现 我的视图封装在presenter中,因此我不是从视图中调用ShowDialog(),而是通过presenter调用 Mai

请不要马上结束这个问题。下面的线程中也讨论了几乎类似的问题

  • 但是,这些并不能解决我的问题。 这个问题从未在我的开发机器中出现过。它发生在用户计算机中,但并不总是如此。事实上,它只发生了3到4次

    当这种情况发生时,应用程序/调用表单似乎被冻结。如果我能猜到(因为我没有在屏幕上看到它)关闭按钮的位置并在被调用的表单上单击它,它就会关闭,应用程序会返回到可用状态,直到再次出现

    我的视图封装在presenter中,因此我不是从视图中调用
    ShowDialog()
    ,而是通过presenter调用

    MainPresenter
    {
        MainPresenter(IMainView view)
        {
            _view = view;
        }
        …
        …
        OpenSecondView()
        {
            var secondPresenter =_presenterFactory.Create<SecondPresenter>();
            secondPresenter.Ininialize(_view);
        }
    }
    
    // Initialize method in the SecondPresenter
    Initialize(owner)
    {
        _secondView.ShowDialog(owner); 
    }
    
    MainPresenter
    {
    主演示者(IMainView视图)
    {
    _视图=视图;
    }
    …
    …
    OpenSecondView()
    {
    var secondPresenter=_presenterFactory.Create();
    第二个演示者。初始化(\u视图);
    }
    }
    //在SecondPresenter中初始化方法
    初始化(所有者)
    {
    _secondView.ShowDialog(所有者);
    }
    
    我正在使用这里解释的MVP的演示者风格

    问题:

  • 如何在我的开发机器中重现问题并修复它
  • 如果我使用
    Show()
    并设置
    TopMost=true
    ,是否可能出现此问题 会发生什么
  • 我应该考虑哪些因素会引起这个问题?<强> < /LI> 如果
    Show()。我对这方面的
    ShowDialog()
    失去了信心

    任何帮助都将不胜感激


    **特定屏幕/视图不会出现此问题。它是随机发生的


    **对于除主窗体以外的所有窗体,ShowInTaskBar都设置为false。

    您是否尝试在窗体的加载事件中添加一个
    this.Activate()
    ,因为我遇到了类似的问题。

    您可以尝试对窗体使用
    TopMost=true
    您的代码片段无法诊断此问题。@HansPassant我同意,我在这里发布它们是为了说明我是如何调用视图的,如果这很重要的话。@HansPassant如果你有兴趣查看任何特定的代码,我可以在这里发布。你能解释一下为什么我需要调用这个。Active()?我看到对话框弹出,但在当前表单后面,这意味着必须使用alt tab键才能获得对话框。这就是你提到的问题吗?你有没有找到一个解决方案,因为它已经有一段时间了。