Udostępnij za pośrednictwem


Przegląd zdarzeń (Formularze systemu Windows)

Zdarzenie to działanie, na które możesz odpowiedzieć lub "obsłużyć" w kodzie. Zdarzenia mogą być generowane przez akcję użytkownika, taką jak kliknięcie myszy lub naciśnięcie klawisza, przez kod programu lub przez system.

Aplikacje sterowane zdarzeniami wykonują kod w odpowiedzi na zdarzenie. Każdy formularz i kontrolka uwidaczniają wstępnie zdefiniowany zestaw zdarzeń, względem których można programować. Jeśli wystąpi jedno z tych zdarzeń i istnieje kod w skojarzonej procedurze obsługi zdarzeń, ten kod jest wywoływany.

Typy zdarzeń zgłaszanych przez obiekt różnią się, ale wiele typów jest typowych dla większości kontrolek. Na przykład większość obiektów będzie przetwarzać zdarzenie Click. Jeśli użytkownik kliknie formularz, zostanie wykonany kod w procedurze obsługi zdarzeń Click formularza.

Notatka

Wiele zdarzeń występuje w połączeniu z innymi zdarzeniami. Na przykład w trakcie wystąpienia zdarzenia DoubleClick wystąpią zdarzenia MouseDown, MouseUpi Click.

Aby uzyskać informacje na temat sposobu zgłaszania i korzystania ze zdarzenia, zobacz Events.

Delegaci i ich rola

Delegaty to klasy często używane w programie .NET Framework do tworzenia mechanizmów obsługi zdarzeń. Delegaty są zbliżone do wskaźników funkcji, często używanych w języku Visual C++ i innych językach obiektowych. W przeciwieństwie do wskaźników funkcji, delegaty są jednak zorientowane obiektowo, bezpieczne typowo i zabezpieczone. Ponadto, gdy wskaźnik funkcji zawiera tylko odwołanie do określonej funkcji, delegat składa się z odwołania do obiektu i odwołuje się do co najmniej jednej metody w obiekcie.

Ten model zdarzeń używa delegatów do powiązania zdarzeń z metodami używanymi do ich obsługi. Delegat umożliwia innym klasom rejestrowanie powiadomień o zdarzeniach przez określenie metody obsługi. Gdy wystąpi zdarzenie, delegat wywołuje związaną metodę. Aby uzyskać więcej informacji na temat definiowania delegatów, zobacz Events.

Delegaty mogą być powiązane z jedną metodą lub z wieloma metodami, co nazywa się multicastowaniem. Podczas tworzenia delegata dla zdarzenia (lub w systemie Windows), zazwyczaj tworzy się zdarzenie o wielokrotnej wysyłce. Rzadkim wyjątkiem może być zdarzenie, które powoduje określoną procedurę (na przykład wyświetlanie okna dialogowego), która nie będzie się logicznie powtarzać wiele razy na jedno zdarzenie. Aby uzyskać informacje na temat tworzenia delegatów multiemisji, zobacz Jak połączyć delegatów (delegatów multiemisji).

Delegat multiemisji utrzymuje listę wywołań metod, z którymi jest powiązana. Delegat multiemisji obsługuje metodę Combine, aby dodać metodę do listy wywołań i metodę Remove, aby ją usunąć.

Gdy zdarzenie jest rejestrowane przez aplikację, element sterujący zgłasza zdarzenie przez wywołanie delegata tego zdarzenia. Delegat z kolei wywołuje metodę powiązaną. W najbardziej typowym przypadku (delegat multiemisji), delegat wywołuje kolejno każdą powiązaną metodę z listy wywołań, co zapewnia powiadomienie typu jeden-do-wielu. Ta strategia oznacza, że kontrolka nie musi utrzymywać listy obiektów docelowych do powiadamiania o zdarzeniach — delegat zarządza całą rejestracją i powiadamianiem.

Delegaty umożliwiają również powiązanie wielu zdarzeń z tą samą metodą, co umożliwia powiadamianie typu wiele-do-jednego. Na przykład zdarzenie kliknięcia przycisku i kliknięcie polecenia w menu mogą wywołać tego samego delegata, który następnie uruchamia pojedynczą metodę do jednolitej obsługi tych różnych zdarzeń.

Mechanizm powiązania używany z delegatami jest dynamiczny: delegat można powiązać w czasie wykonywania z dowolną metodą, której podpis jest zgodny z procedurą obsługi zdarzeń. Dzięki tej funkcji można skonfigurować lub zmienić metodę powiązaną w zależności od warunku i dynamicznie dołączyć program obsługi zdarzeń do kontrolki.

Zobacz też