W pewnym sensie cofnąłem się w kąt.Dziedziczenie obsługi zdarzeń w C#
Mam serię kontrolek UserControl, które dziedziczą po rodzicu, który zawiera kilka metod i zdarzeń w celu uproszczenia rzeczy, więc nie muszę pisać linii i linii prawie identycznego kodu. Tak jak ty. Jednostka nadrzędna nie zawiera żadnych innych elementów sterujących.
To, co chcę zrobić, to mieć jedną procedurę obsługi zdarzeń w nadrzędnej kontrolce UserControl, która wykonuje i wykonuje operacje, które może wykonać tylko kontrola nadrzędna (to jest warunkowe wywoływanie zdarzenia, tak jak zdarzenie zdefiniowano w obiekcie nadrzędnym) . Następnie podłączyłem tę procedurę obsługi zdarzeń do wszystkich moich pól wejściowych w kontrolkach podrzędnych, a elementy sterujące podrzędne posortowałyby zadanie analizowania danych wejściowych i powiadamiając nadrzędną kontrolę, czy należy rzucić to zdarzenie. Miły i czysty, bez powtarzających się, kopiuj-wklej kod (który dla mnie zawsze powoduje błąd).
Oto moje pytanie. Visual Studio uważa, że jestem zbyt sprytny o połowę i ostrzega mnie, że "metoda" CheckReadiness "[procedura obsługi zdarzeń w rodzica] nie może być metodą dla zdarzenia, ponieważ klasa, z której pochodzi ta klasa, już definiuje tę metodę." Tak, Visual Studio, to punkt. I chcę, aby miał obsługę zdarzeń, która obsługuje tylko zdarzenia generowane przez klasy potomne, a jej jedynym zadaniem jest umożliwienie mi podpięcia dzieci bez konieczności pisania pojedynczego wiersza kodu. Nie potrzebuję tych dodatkowych modułów obsługi - wszystkie potrzebne funkcje są oczywiście wywoływane, gdy dzieci przetwarzają dane wejściowe użytkownika.
Nie jestem pewien, dlaczego Visual Studio zaczęło narzekać na to teraz (ponieważ pozwoliło mi to wcześniej) i nie jestem pewien, jak to zrobić, aby odszedł. Najlepiej, chciałbym to zrobić bez konieczności definiowania metody, która po prostu wywołuje CheckBeadiness. Co powoduje to ostrzeżenie, co powoduje pojawienie się teraz, gdy nie minęło godzinę temu, i jak mogę to zrobić, nie uciekając się do robienia małych opiekunów we wszystkich zajęciach dla dzieci?
To by rozwiązało problem, ale miałem nadzieję uniknąć zasadniczo pustych procedur obsługi błędów, stąd moje pytanie. – Merus
Nie sądzę, że są one zbędne, ale kontrolery i programy obsługi zdarzeń są zasadniczo umieszczone w tym samym miejscu.Może to (w zależności od układu kodu) prowadzić do lepszej czytelności kodu itp. Jest to po prostu, że cała praca odbywa się gdzie indziej! –
Wydaje się, że należy postępować ... wydaje się, że to tylko problem projektanta ... –