Получение экземпляров формы - PullRequest
0 голосов
/ 23 января 2009

Я создаю приложение-редактор уровней, разработанное в проекте MDI. Приложение имеет два основных режима просмотра: режим WorldEditor и режим ObjectEditor. В зависимости от режима я хочу, чтобы в отдельном окне свойств отображалась настройка свойств, характерная для текущего режима.

Я думал об использовании события Activated, и из этого события скажите форме свойства загрузить соответствующую настройку. Мне нужно достичь PropertyForm из класса World или Object, чтобы выполнить это. Вот где я застрял.

Я считаю, что смогу решить эту проблему, объявив класс PropertyForm статическим. Поскольку я использую только один из его типов одновременно, я хочу быть в состоянии достичь его глобально. Однако объявление класса формы как static дает мне ошибки компилятора. Я делаю это неправильно, если это вообще возможно.

Как мне найти и найти различные формы, которые активны в приложении?

Ответы [ 3 ]

0 голосов
/ 23 января 2009

Похоже, что ваша родительская форма MDI (которая знает, какое из дочерних окон MDI активно) должна содержать ссылку на форму свойства. Добавьте обработчик событий в каждое событие Activated созданного дочернего окна, используя функцию в родительской форме, которая использует информацию из активированного дочернего окна для правильной настройки формы свойства.

Ответ Сеша относительно Синглтона может также применяться, хотя это действительно другой вопрос.

0 голосов
/ 23 января 2009

Вы можете получить то, что вам нужно, из параметра sender в обработчике Activated.

0 голосов
/ 23 января 2009

Вам нужен синглтон, а не статический класс.

Без особых потерь производительности вы можете создавать различные объекты PropertyForm - по одному для каждого типа «представления», которое у вас есть. Вы можете добавить параметризованный конструктор - должен взять объект, который имеет детали, специфичные для каждого представления. Это позволит вам создать PropertyForm, специфичную для каждого представления.

Если вы действительно хотите иметь только одну копию PropertyForm, тогда более простой подход - скрыть форму. В обработчике события «show» вы можете настроить его для текущего представления. Рассмотрим одноэлементный подход как последний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...