(вложенные) пользовательские элементы управления в шаблоне mvp, вызывающие спорадические проблемы - PullRequest
2 голосов
/ 01 марта 2010

У меня серьезная проблема с вложенными пользовательскими элементами управления (UC) в WinForms при попытке реализовать шаблон mvp (пассивное представление). Проект состоит из одной модели (выполненной в виде синглтона) и набора различных презентаторов с соответствующими интерфейсами просмотра. Чтобы избежать одного огромного интерфейса вида и, следовательно, перегруженного основного пользовательского интерфейса, я решил использовать набор различных UC. Каждый UC имеет один интерфейс просмотра и один презентатор, который может получить доступ к модели. Но есть вложенные UC: это означает, что один специализированный UC реализует своего рода базовый UC. Основной пользовательский интерфейс просто представляет контейнер для всех этих UC. Пока все хорошо (если нет, пожалуйста, спросите) ?!

Есть две проблемы, с которыми я сейчас сталкиваюсь (но я полагаю, что они одного происхождения):

  1. Время от времени больше невозможно загружать UC и тестировать их в тестовом контейнере пользовательского элемента управления Visual Studio 2008. Сообщение об ошибке просто говорит, что проект с выходным типом библиотеки классов не может быть запущен напрямую и т. Д. Я могу «справиться» с этим, выгружая все проекты UC и перезагружая их впоследствии. (Полагаю, что ссылки на все компоненты mvp и другие UC обновляются).
  2. Предполагая, что реализация моего шаблона mvp в порядке, и все эти UC можно тестировать в контейнере тестирования VS в определенное время - остается самая большая проблема: я не могу добавить какой-либо UC (даже основной и неопубликованные) в простую форму (UI).

Может ли быть, что мой основной UC вызывает все эти проблемы ?! Он состоит из двух простых ComboBox и реализует базовый интерфейс докладчика и базовый вид. Всякий раз, когда я добавляю этот UC в другой UC, конструктор VS добавляет две ссылки на общедоступные методы получения UC в качестве ресурсов. Затем я вручную удаляю эти ресурсы из файла resx и рекомендую соответствующие строки в файле конструктора.

1 Ответ

0 голосов
/ 11 июня 2010

Для второго: Вы должны использовать в своем коде свойство DesingMode класса Component (которое происходит от UserControl). Имейте в виду, есть ошибка с этим свойством, не имеющим правильного значения с вложенными пользовательскими элементами управления. Это может помочь вам, я думаю: Когда ваш WinForms UserControl сводит вас с ума

...