簡體   English   中英

ShowDialog(所有者)隱藏在/不顯示,即使我正在提供所有者IWin32Window

[英]ShowDialog(owner) is hiding behind/not showing even though I am supplying owner IWin32Window

請不要馬上關閉這個問題。 在以下線程中也討論了幾乎相似的問題。

  1. Windows窗體和ShowDialog問題
  2. Form.ShowDialog()或Form.ShowDialog(this)?

但是,這些並不能解決我的問題。 我的開發機器中從未發生過這個問題。 它發生在用戶機器上,但並非總是如此。 實際上它只發生了3到4次。

當它發生時,似乎應用程序/調用表單被凍結。 如果我可以猜測(因為我沒有在屏幕上看到它)關閉按鈕所在的位置並在被調用的表單上單擊它,它將關閉並且應用程序將返回到可用狀態,直到它再次出現。

我的視圖封裝在演示者中,因此我不是從視圖中調用ShowDialog()而是通過演示者調用。

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); 
}

我正在使用觀察主持人風格的MVP解釋http://www.aspiringcraftsman.com/2008/11/23/model-view-presenter-styles/

問題:

  1. 如何在我的開發機器中重現問題並修復它?
  2. 如果我使用Show()並設置TopMost = true ,是否可能出現此問題?
  3. 我應該考慮哪些因素可能導致這個問題?

如果Show()絕對保證不會出現問題,我將使用Show() 我對ShowDialog()對此失去了信心。

任何幫助將不勝感激。


**特定屏幕/視圖不會出現此問題。 它隨機發生。

**對於除主窗體之外的所有窗體,ShowInTaskBar設置為false。

您是否嘗試在表單的load事件中添加this.Activate() ,因為我遇到了類似的問題。

您可以嘗試使用TopMost = true作為表單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM