У меня есть программа .NET CF (запущенная на смартфоне), и я написал для нее страницу параметров.
На странице параметров у меня есть ссылки на 6 других форм, которые содержат актуальные параметры.
Когда основная форма загружается, она создает 6 подчиненных форм и сохраняет их в списке, готовом к запуску. Проблема заключается в начальном времени создания, необходимом для создания этих форм, что замедляет работу основных настроек.
В идеале мне бы хотелось просто указать тип и параметры, необходимые для создания подчиненной формы при загрузке, а затем создать форму при необходимости.
Вот фрагменты кода того, как он работает в данный момент:
Form_OnLoad ():
AddSettingsOptions("General", new General());
AddSettingsOptions("Action Alert", new BaseAlertForm("Action Alert Settings", SystemManager.ActionAlert));
AddSettingsOptions("Comms Alert", new BaseAlertForm("Comms Alert Settings", SystemManager.CommsErrorAlert));
AddSettingsOptions("Advanced", new Advanced());
AddSettingsOptions("Diagnostics", new Diagnostics(_unitWatcher));
AddSettingsOptions("About", new About());
Форма хранится в разделе тегов списка (в котором отображаются подопции)
private void AddSettingsOptions(String name, Form form)
{
listViewSettings.Items.Add(
new ListViewItem(
String.Format(" {0} {1}", listViewSettings.Items.Count + 1, name))
{
Tag = form
}
);
}
Если нажата опция, вызывается следующая функция для запуска формы
private void ShowSubSetting(ListViewItem item)
{
if (item == null)
return;
object tag = item.Tag;
Form form = tag as Form;
if (form != null)
{
form.ShowDialog();
//form.Dispose();
}
}
Я уверен, что есть довольно простой способ сделать это, я просто борюсь с правильным способом.
Спасибо