Aplikacja z wieloma oknami i menu

Aplikacja z wieloma oknami i menu
AA
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 lat
  • Postów:23
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?

litrmleka
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:lubuskie
  • Postów:201
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().

JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 miesięcy
  • Postów:1065
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ś

Kopiuj
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?

grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
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.

edytowany 5x, ostatnio: grzesiek51114

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.