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?
- Rejestracja:ponad 8 lat
- Ostatnio:około 5 lat
- Postów:23
- Rejestracja:ponad 7 lat
- Ostatnio:5 miesięcy
- Postów:1065
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?

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
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.
- WinFormsPrism.zip (204 KB) - ściągnięć: 77
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.