wizard z formami

0

Tworzę wizard przy użyciu window forms w którym użytkownik jest pytany o kilka rzeczy. Jest to kilka form wyświetlających się po sobie po kliknięciu przycisku Dalej.
Niestety Widać cały efekt zamykania starej formy i otwierania nowej (mignięcie formy). Poniżej kod jak wyświetlam nową formę.

  ReadMemoryUniqueForm form = new ReadMemoryUniqueForm();
            form.Show();
            this.Dispose();

Czy jest opcja by to jakoś obejść i nie było wrażenia migania całej formy lecz jedynie podmiany treści w środku formy ?

0

Zrób wszystko na jednej formie i tylko zmieniaj potrzebne kontrolki.

0

watpie zeby byla, bo skoro masz forme to komputer ja rysuje. Gdy wywolujesz na nim dispose to wtedy jest usuwany z pamieci i przestaje go rysowac.

Jezeli chcesz zrobic takie migniecie z formami to musisz napisac jakis kontener na formy i w zaleznosci od Z index wyswietlac dana forme, gdy bedziesz chcial zmienic forme to zamiast zamkniecia najpierw przestawiasz Z index a pozniej po jakims czasie zamykasz ta forme. Wtedy nie bedzie efektu migania tylko po prostu przelaczenia formy

0

Utrudniasz sobie życie. Ma być jedna forma główna z panelem - taki kontener. Potem każda strona wizarda to osobna forma - najlepiej dziedzicząca po jakimś wspólnym przodku (innym niż form). Przyciski Następny i Poprzedni mają być tylko na formie głównej.
Każda strona powinna wiedzieć, która strona następuje po niej albo była przed nią. Bardzo fajnie się tu sprawdzi maszyna stanów (przy okazji bardzo fajne ćwiczenie - zaimplementować taką maszynę).

I przy zmianie strony nie dawaj dispose, bo po co? Dispose niszczy daną formę. A co, jeśli ktoś będzie chciał wrócić? Poza tym Dispose wymaga też czasu. Lepiej po prostu pokazać nową formę na górze starej, a starą zamknąć. Żadnego Dispose. I nie będzie efektu migania.

Jak skończysz wizarda, to dopiero wtedy diposujesz wszystkie formy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.