ShowDialog (владелец) скрывается / не отображается, хотя я предоставляю владелец IWin32Window - PullRequest
3 голосов
/ 21 сентября 2011

Пожалуйста, не закрывайте вопрос сразу. Почти аналогичная проблема также обсуждается в следующих темах.

  1. Проблема Windows Forms и 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.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Вы можете попробовать использовать TopMost = true для формы

0 голосов
/ 23 сентября 2011

Вы пытались добавить this.Activate() в событие загрузки для формы, потому что у меня была похожая проблема.

...