Aplikacja z wieloma oknami i menu

0

Witam,
stworzyłem aplikacje w windows forms. W pierwszym oknie znajduje się menu z przycisków po wybraniu jednego z nich obecne okno z menu chowa się i pojawia drugie okno z inną zawartością.
Mam więc 2 okna okno1 i okno2. Pytanie jak zrobić by po wciśnięciu w oknie1 w menu przycisku okno1 zamykało się a otwierało się okno2.
Obecnie okno1 się chowa jednak chciałbym je zamykać,
ponieważ jeżeli chciałbym zamknąć aplikację to musiałbym zamknąć 2 okna a tak zawsze było by jedno do zamknięcia. (gdybym miał więcej okien musiałbym zamykać wszystkie po kolei).
Problem pojawia się jeśli chcę zamknąć okno1 przed wyświetleniem okna2 program kończy działanie co jest oczywiste.
Chciałbym otwierać i zamykać dowolne okna (Każdy przycisk z menu otwiera inne okno z inną zawartością) bez zamykania programu i zakończenie go wywołaniem funkcji.
Próbowałem z nieskończoną pętlą ale mi nie wychodzi.
Jakieś pomysły?

0

A nie możesz zrobić jednego okna ze stałym menu i ze zmieniającą się zawartością? Jeśli chcesz żeby się zamykało zamiast chować to użyj this.Close() zamiast this.Hide().

0

Być może da się wcisnąć w Program.cs do main jakiś manager, który będzie coś tam otwierał i zamykał tylko po co? Nieco wydumany problem.

Np takie coś

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
            Application.Run(new Form2());


        }

Otworzy Ci okno 2 po zamknięciu okna 1. Może da się zamiast Application.Run(new Form1()); dać jakiś manager, który to obsłuży na jakichś eventach z okna menu, ale nigdy nic takiego nie robiłem i nie potrzebowałem. Jak dla mnie MDI załatwia takie tematy.

Jjak zamkniesz okno 1 po pokazaniu okno 2 to nie będzie wtedy menu i żeby pokazać okno menu to trzeba uruchomić ponownie program?

0

Zawsze można użyć do tego jakiegoś frameworka aplikacyjnego, wyposażonego w event aggregatora, który pozwala komunikować się klasom niepowiązanym ze sobą referencyjnie. Np. coś takiego jak Prism (Kto mówi, że Prism jest wyłącznie do mvvm?).

W przykładzie, który napisałem, po wciśnięciu guzika wysyłany jest event, który jest subskrybowany przez drugą formę. Forma ta w odpowiedzi na publikacje eventu zamyka okno, jednocześnie nie wiedząc nic o tym kto taki event wysłał.

PS: chyba trochę nie o to chodziło ale niech już ten materiał zostanie, może się pytaczowi przyda.

1 użytkowników online, w tym zalogowanych: 0, gości: 1