Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Модальные диалоговые окна в model-view-presenter


Автор: vovogege 28.7.2011, 13:23
Использовать ли блокировку при открытии модальных диалоговых окон или нет. Просто при использовании блокировки не очень удобно писать тесты. Как лучше к этому подойти? smile 

Автор: Суровый 29.7.2011, 09:44
Если под блокировкой имеется ввиду невозможность воздействовать на элементы управления материнской формы, то отвечу следующее:
разрабатывайте архитектуру своего приложения исходя из логики его работы, а не исходя из удобства написания тестов.

Автор: vovogege 30.7.2011, 09:31
Вас понял, спасибо за совет. smile 

Автор: vovogege 31.7.2011, 09:18
Всё таки остановился на варианте без блокировки при показе диалогового окна. Диалогов будет много, один диалог может открывать другие диалоги, а те в свою очередь свои.
Получается где-то так:
Код

  /// <summary>
    /// Интерфейс экрана
    /// </summary>
    public interface IScreen{

        /// <summary>
        /// Заголовок
        /// </summary>
        string Title{set;}

        /// <summary>
        /// Фалг видимости
        /// </summary>
        bool IsVisible{set;}

        /// <summary>
        /// Событие закрытия экрана
        /// </summary>
        event EventHandler Close;
    }


Код

 /// <summary>
    /// Экран главной формы
    /// </summary>
    public interface IMainScreen:IScreen{
        
    }


Код

 /// <summary>
    /// Вид экрана с вопросом к пользователю
    /// </summary>
    public interface IQuestionScreen:IScreen{

        /// <summary>
        /// Вопрос к пользователю
        /// </summary>
        string Question{set;}

        /// <summary>
        /// Выбор пользователя
        /// </summary>
        DialogResult Result{get;}
    }


Код

 /// <summary>
    /// Предоставляет доступ к экранам
    /// </summary>
    public interface IMultiScreen{

        IMainScreen MainScreen{get;}

        IQuestionScreen QuestionScreen{get;}
    }


То есть установка свойства экрана IsVisible=true не будет приводить к блокировке потока до закрытия экрана. Presenter сам будет устанавливать видимость экранов, реагируя на события. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)