Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переход по формам, с сохранением параметров 
V
    Опции темы
ДобренькийПапаша
Дата 13.12.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Есть несколько форм, в каждой из них можно выбирать какие-то параметры и в каждой есть кнопки "Вперёд" и "Назад" для перехода по формам. То что пользователем было введено надо запоминать.

Как это реализовать кошерно? Делать предыдущую форму невидимой при переходе вперёд? И если делать правильно, то можно ли открывать формы модальными окнами?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Экскалупатор
Дата 13.12.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



ДобренькийПапаша, можно сделать класс который будет хранить состояния для отдельных окон, и при переходах туда обратно брать из этого класса значения и сохранять их в него же. в конце можно все нужные данные взять из этого одного класса. в каждой форме нужно только прописать какие значения брать.
PM MAIL ICQ   Вверх
thomas
Дата 13.12.2009, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



ДобренькийПапаша
Приветствую.
Не совсем понятно назначение нескольких форм. Что это? Вы делаете Визард?
Иди у вас приложение которое работает с несколькими формами одновременно?


Экскалупатор,
Приветствую.
Не могли бы вы набросать простенький пример реализации своего предложения.
Или кинуть ссылку где об этом можно почитать.

Кстати  ДобренькийПапаша, если использовать MDI то для каждого дочернего окна неплохо реализовать паттерн Синглтон, что гарантирует наличие только одного экземпляра дочернего окна если оно уже открыто.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Экскалупатор
Дата 13.12.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



thomas, приветствую.
Цитата

Не могли бы вы набросать простенький пример реализации своего предложения.


попробую объяснить идею.
я так понимаю что это что то типа визарда должно быть. т.е. пользователю по очереди показываются окошки, в которых пользователь что то делает и нажимает продолжить, или вернуться если что то нужно изменить. смысл в том что бы данные из всех этих окошек были сохранены и пользователю не приходилось заново их вводить. для этого можно сделать один класс, в котором в виде свойств(например) сделать все данные которые нужны для визарда. каждая форма будет работать с нужными ей свойствами(читать при открытии, и писать их в свойства при переходе на другое окно) этого класса. т.е. фактически в каждом окне при его открытии нужно прочитать те свойства которые нужны этой форме, а потом по событию кнопки, записать данные обратно. в итоге мы получаем кучу окошек которые меняют свойства одного класса. в итоге все данные которые вводит пользователь сохраняются в одном классе и доступны сразу все для чего то(что нужно дальше с ними делать).
как то так в общем.
PM MAIL ICQ   Вверх
Экскалупатор
Дата 13.12.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Цитата(ДобренькийПапаша @  13.12.2009,  16:32 Найти цитируемый пост)
И если делать правильно, то можно ли открывать формы модальными окнами?


наверное да стоит делать модальными, хотя ты не оговариваешь детали. если это Setup то смысла нету, а если настройки какие то внутри программы то конечно надо модальные, а то вдруг пользователю захочется отложить настройку не закончив ее и не закрывая визарда. получиться лажа.
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 13.12.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Да, это визард. Да я сам не знаю как лучше, использовать ли MDI или вызывать как модальные. Насчёт синглтона, спасибо.

Экскалупатор, все окна это отдельные классы, как они будут обращаться к одному и тому же классу, содержащему все свойства?
Где экземпляр этого класса должен быть объявлен, я просто реализацию не очень представляю, ибо с ООП у меня пока плохо)))


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Экскалупатор
Дата 13.12.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



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

можно сделать вариацию на первый вариант: создать класс в котором будут находиться все нужные свойства, и все формы запускать из этого класса по очереди. в формы передавать ссылку на этот класс и через него работать.

можно еще через наследование сделать. но по моему это будет слишком.
PM MAIL ICQ   Вверх
thomas
Дата 13.12.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



ДобренькийПапаша
Если это Визард, то MDI не подходят.
Для Визарда нужно создавать ряд одинаковых, по дизайну(стилю), окон, со своими конкретными "функциями", и кнопками вперед, назад, отмена. 
При переходе с одного окна(шага) на другое первоначальное окно закрывается и создается следующее или предыдущее.
Для хранения необходимой информации действительно нужен отдельный класс, что-то типа settings.
Мне кажеться это оптимальное решение. В этом классе ты можешь прописать необходимые "настройки" с дефолтными значениями.
И каждый раз когда ты открываешь то или иное окно Визарда считывать оттуда необходимые значения. А при закрытии соответсвенно сохранять, при переходе вперед, или стирать(возвращать к дефолтным), при шаге назад.
После окончания прохода по всем окнам Визарда, ты имеешь все необходимые данные, котороые установлены пользователем или по умолчанию.

 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
ДобренькийПапаша
Дата 13.12.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Спасибо всем. Теперь всё ясно. Я ещё подумаю и воспользуюсь либо созданием управляющего класса, либо синглтоном (пока склоняюсь к синглтону).

з.ы. Делать класс с параметрами как static - не кошерно.

Это сообщение отредактировал(а) ДобренькийПапаша - 13.12.2009, 20:29


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Экскалупатор
Дата 13.12.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



ДобренькийПапаша, можно кстати сделать еще один вариант. поместить на одну форму ряд панелей с необходимыми контролами. и показывать их по очереди(по нажатию кнопки вперед/назад соответственно), я думаю большинство визардов по такой схеме сделано. тогда не придется ничего дополнительно изобретать, все будет в одном классе.
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 13.12.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Идея понятна. Только что-то не пойму как это на форму одну накидать? Ну разместил панель dock=fill. На неё контролы. А дальше то что? Новый слой с панелью?)))
Я что-то не знаю как это сделать)))

Или после того как накидал на панель контролы, можно в свойствах ей visible сделать false. Теперь кинуть новую панель и т.д....?

Это сообщение отредактировал(а) ДобренькийПапаша - 13.12.2009, 21:03


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Экскалупатор
Дата 13.12.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Цитата

Или после того как накидал на панель контролы, можно в свойствах ей visible сделать false. Теперь кинуть новую панель и т.д....?


да. похоже на то. можно просто слоями. поместил одну панел. сделал контролы. потом наверх следующую и т.д. можно (даже наверное лучше) сделать отдельно каждую панельку в виде UserControl а потом уже эти контролы помещать на форму.

Добавлено через 2 минуты и 27 секунд
т.е. например у тебя предполагается в визарде 10 окон, ты делаешь отдельно 10 различных панелей, каждая со своими контролами и т.д. потом в своей форме делаешь список своих панелей и по очереди отображаешь их на форме.
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 13.12.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Спасибо. Попробую.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1371 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.