3

すぐに質問を閉じないでください。以下のスレッドでもほぼ同様の問題が議論されています。

  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 に設定されます。

4

2 に答える 2

0

TopMost = trueフォームに使ってみることができます

于 2011-09-27T13:34:13.457 に答える
0

this.Activate()同様の問題があったため、フォームのロード イベントに を追加してみましたか。

于 2011-09-23T10:10:37.707 に答える