2013-04-19 22 views
5

Pracowałem nad aplikacją opartą na systemie Windows w języku C# i potrzebuję pomocy. Próbuję odtworzyć migotanie okna, które ma większość aplikacji systemu Windows, gdy formularz traci skupienie na formie nadrzędnej. Najlepszym sposobem na wyjaśnienie tego jest otwarty kalkulator, otwórz okno pomocy i spróbuj kliknąć kalkulator, okno pomocy, a następnie nie spadając z kalkulatora, migocze tracąc i zyskując cień na krawędziach.Migotanie okien przy utracie ostrości?

Po kliknięciu elementu nadrzędnego udało mi się odzyskać fokus na oknie podrzędnym, co powoduje dziwny efekt migotania, ponieważ okno nadrzędne jest chwilowo przenoszone przed oknem podrzędnym. Zgaduję, ale efekt, którego szukam, wydaje się być taki, że kalkulator nigdy nie pojawia się przed oknem pomocy, a wtedy okno pomocy jest po prostu aktywowane i dezaktywowane kilka razy.

Próbowałem zrobić kilka wyszukiwań i widziałem kilka tematów związanych z tym, ale żadne z rozwiązań nie pasuje. Jestem całkiem nowy w tworzeniu okien, więc wciąż są rzeczy, których nie rozumiem, więc bądź cierpliwy, jeśli czegoś nie rozumiem na początku.

góry dziękuję

omówieniem na przykład Kalkulator:

1) otwarcie kalkulatora z Windows akcesoria 2) w pasku narzędzi przejdź do zakładki pomocy i otworzyć o opcji kalkulatora 3) kliknij w oknie kalkulatora 4) o okna kalkulatora wtedy migotania natomiast nigdy tyle kalkulatora

jedyny postęp zrobiłem w tym kierunku jest

Ta zmienna otwarta jest czymś, czego używam do śledzenia otwartych formularzy i jest sprawdzana, gdy wyświetlam inny formularz.

+0

Jakie rozwiązania znalazłeś? Opublikuj część swojego kodu. –

+1

+1, interesujące pytanie w rzeczywistości. Jesse, kilka czytań zajęło mi zrozumienie tego, co opisujesz ... możesz rozważyć napisanie wyraźniejszych kroków reprodukcji, aby ludzie wiedzieli, o czym mówisz. – tnw

+0

Ładne, dobre kroki repro. Powinieneś również dołączyć kod, który wypróbowałeś. Wygląda na to, że masz tam 90%. – tnw

Odpowiedz

7

W twoim przykładzie okno Informacje nazywa się okno modalne. Modalne okno uniemożliwia użytkownikowi interakcję z oknem nadrzędnym, dopóki nie zostanie zamknięte. Użyj Form.ShowDialog zamiast Form.Show, aby przedstawić formularz użytkownikowi jako okno modalne.

+0

Dziękuję bardzo, nie mogę uwierzyć, że rozwiązanie było takie proste !!! Sir, nie mogę ci wystarczająco podziękować !!! – Jesse

0

Utwórz dziecko z formularza modal. Oznacza to, że dziecko musi być prawidłowo zamknięte, zanim fokus zostanie przeniesiony z powrotem do rodzica.

Powiązane problemy