Zmiana okna z opóźnieniem

0

Dzień dobry. Obecnie piszę aplikację wykorzystując Winforms. Mam problem przy zrobieniu tych rzeczy:

  1. Opóźnienie przełączenia TabPage w TabControl.
    Chcę po wciśnięciu przycisku przejść do innego TabPage z opóźnieniem 5 sekund. Nie mogę tego zrobić
Thread.Sleep(5000)

, gdyż poza TabControl mam zegarek (gⓂ️s), którego interwał jest ustawiony na 1 sekundę <- to jest w metodzie timer1_Tick. Jest możliwość, aby wykonać takie opóźnienie przełączenia bez zatrzymywania wyświetlania zegarka?
2) Poprawne wyświetlenie TabPage.

private void zaplacMonetami(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1 && tabControl1.SelectedTab == Okno1)
            {
                tabControl1.SelectedTab = Okno2;
                tabControl1.SelectedTab = Okno3;
                Thread.Sleep(5000);
                tabControl1.SelectedTab = Okno4;
            }
        } 

Po części jest to związane z punktem pierwszym, ale mam problem z wyświetleniem poprawnie Okno2. Będąc w Oknie1 po wciśnięciu klawisza, chcę aby wyświetliło się Okno2 a po 5 sekundach okno 4. W kodzie zamieszczonym powyżej, gdyby nie było

 tabControl1.SelectedTab = Okno3;

, to Okno2 wyświetliłoby się niepoprawnie (samo tło pod tekstem bez tekstu). Okno3 się nie wyświetla, jest zastosowane tylko do poprawności działania. Okno2 oraz Okno3 zawierają tylko Label rozmieszczony w innych miejscach. Nie wiem gdzie jest problem. Może trzeba stosować ten "trik" ?

0

Wszystko wykonujesz na głównym wątku UI. Musisz skorzystać z background workera lub z innego wątku.

0

jutro jak bede przy kompie podam Ci gotowe rozwiazanie kolo 16. A jak nie umiesz sie doczekac to windowswait albo formwait albo workerwait poszukaj sobie.

Sciagadz gotowy projekt. Podpinasz go pod swoj dodajesz .dll do referencji i procesy w tamto okno wrzucasz jaksonem czy jakos tak. I otowrzy nowa forme jak wszystko wczyta.

Przydatne rozwiazanie

0
  1. Opóźnienie przełączenia TabPage w TabControl.
    Chcę po wciśnięciu przycisku przejść do innego TabPage z opóźnieniem 5 sekund.

Odpalasz Timer na 5 sekund i w zdarzeniu timera zmieniasz aktywną stronę.

chcę aby wyświetliło się Okno2 a po 5 sekundach okno 4

Odpalasz Timer a w zdarzeniu timera...

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