Я бы не пошел по пути создания 45 форм при запуске приложения. Это значительно увеличит время запуска и, возможно, (если не вероятно) исчерпает ваши ресурсы памяти, и все это обеспечит функциональность, которая может даже не понадобиться вашему пользователю.
В моих приложениях WinMo каждая форма предназначена для работы с относительно небольшим подмножеством данных, поэтому время запуска ограничено вызовами базы данных и загрузкой данных в элементы управления формы. Как правило, время, необходимое для создания экземпляра одной из этих форм и показа, никогда не превышает секунды или две.
Если для показа ваших форм требуется больше времени, чем это, возможно, существует проблема с извлечением данных или способом загрузки данных в элементы управления формы (например, у вас может быть пользовательский элемент управления gridview, который полностью отображает все 300 строки, хотя только 12 видны одновременно). Если ваши данные настолько велики, что для их извлечения законно требуется много времени, скорее всего, это гораздо больше данных, чем пользователь может практически взаимодействовать с ними в любом случае.
Я предполагаю, что ваше упоминание о "5 разделах", чтобы добраться туда, куда пользователь должен пойти, означает, что они могут (как минимум) "свернуть" 5 уровней до чего-то. Если бы вы реализовали это, создав каждую экземпляр формы и показав следующую форму, используя ShowDialog
, у вас было бы не более 5-6 форм одновременно, что не должно быть проблемой для приложения .Net CF (I делай это все время). Таким образом, вам не нужно делать ничего особенного, чтобы отследить, какая форма должна отображаться, когда - вы просто открываете форму откуда угодно, а когда форма закрывается, вы автоматически возвращаетесь к вызывающей форме.
Есть некоторая странность менеджера z-порядка / задач, с которой вам приходится иметь дело, но это не особенно сложно. Перед вызовом ShowDialog
в дочерней форме вы устанавливаете свойство Text
родительской формы в пустую строку, а затем возвращаете исходную подпись формы после возврата ShowDialog
. Это не является строго обязательным, но в Windows Mobile (по крайней мере до версии 6) все открытые формы .Net (с непустым свойством Text) отображаются в списке «Выполняемые программы», даже если они все из одного и того же приложение. Мне обычно нравится, когда мои мультиформные приложения выглядят как одна программа, поэтому я обычно устанавливаю Text
каждой формы в название приложения).
Я также экспериментировал с приложением для одной формы, которое реализует каждый элемент пользовательского интерфейса как пользовательский элемент управления вместо формы, а затем создает и складывает элементы управления, как если бы вы создавали и открывали формы. Это работает, но это взлом, и я не рекомендую это. Формы имеют событие Load, а UserControls - нет, что является основной проблемой.