Пожалуйста, не закрывайте вопрос сразу. Почти аналогичная проблема также обсуждается в следующих темах.
- Проблема Windows Forms и ShowDialog
- 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/
Вопросы:
- Как я могу воспроизвести проблему на моем компьютере разработчика и исправить ее?
- Если я использую
Show()
и задаю TopMost = true
, возможно ли эта проблема?
произойти?
- Какие вещи, которые я должен учитывать, могут вызвать эту проблему?
Если Show()
абсолютно гарантирует, что проблема не возникнет, я пойду с Show()
. Я как бы потерял веру в ShowDialog()
в этом.
Любая помощь будет принята с благодарностью.
** Проблема не возникает для определенного экрана / просмотра. Это происходит случайно.
** Для всех форм, кроме основной, ShowInTaskBar имеет значение false.