2008-09-27 11 views
11

Utworzono formant WinForms, który dziedziczy po System.Windows.Forms.UserControl ... Mam pewne niestandardowe zdarzenia kontrolne, które chciałbym, aby odbiorca mojej kontroli być w stanie zobaczyć. Nie jestem w stanie wyświetlić moich zdarzeń na karcie Zdarzenia w oknie Właściwości podczas projektowania. Oznacza to, że jedynym sposobem, aby przypisać zdarzenia jest programowo napisaćWyświetlanie czasu projektowania dla zdarzeń kontroli użytkownika

myUserControl.MyCustomEvent += new MyUserControl.MyCustomEventHandler(EventHandlerFunction); 

to jest w porządku dla mnie, ja przypuszczam, ale gdy ktoś przychodzi do korzystania z mojego UserControl oni nie będą wiedzieć, że te zdarzenia istnieje (chyba że czytać biblioteka doco ... tak, dobrze). Wiem, że zdarzenie pojawi się przy użyciu IntelliSense, ale byłoby wspaniale, gdyby mogło pokazać się również w oknie właściwości.

Odpowiedz

23

Upewnij się, że Twoje wydarzenia są jawne. Na przykład ...

[Browsable(true)] 
public event EventHandler MyCustomEvent; 
+0

Jest to publiczny, niestandardowy moduł obsługi zdarzeń, a typ modułu obsługi zdarzeń jest publicznym delegatem ... nie ma niczego jest nieprawidłowo funkcjonalny ... zdarzenia działają i strzelają we właściwy sposób, jest to wyłącznie kwestia czasu projektowania. –

+0

Aha, upewnij się, że definicja zdarzenia obsługi jest zawsze zadeklarowana jako publiczna, w przeciwnym razie nie będzie widoczna. –

+0

Tak jak powiedziałem, jest to publiczne ... –

0

Rozwiązanie za pomocą delegata. Dla przykładu użyłem dla niestandardowych ListView które przerabiają Item dodania: Deklarują swoją Delegat:

public delegate void ItemAddedHandler(object sender, ItemEventArgs e) 

następnie zadeklarować zdarzenie, które wykorzystują Delegat:

[Browsable(true)] 
    public event ItemAddedHandler ItemAdded; 

Uwaga: ItemEventArgs jest zwyczaj EventArgs

Nadzieja może ci pomóc, działa dobrze dla mnie

Powiązane problemy