2009-06-03 13 views

Odpowiedz

36

Można powierzchnia nowego zdarzenia i przekazać żadnych subskrypcji prosto do kontroli, jeśli chcesz:

public class UserControl1 : UserControl 
{ 
    // private Button saveButton; 

    public event EventHandler SaveButtonClick 
    { 
     add { saveButton.Click += value; } 
     remove { saveButton.Click -= value; } 
    } 
} 
+0

Niesamowita rzecz! Zrobiłem coś podobnego, jawnie dodając procedurę obsługi zdarzeń, ponieważ ujawniłem kontrolę podrzędną publicznie poprzez kontrolę użytkownika. Twoja sugestia jest najdoskonalszym sposobem! Dzięki! –

+11

Pomimo swojej elegancji, to rozwiązanie ma poważną wadę: argumentem "nadawcy" przekazanym do obsługi będzie przycisk, a nie kontrolka UserControl. To uniemożliwia użycie tego samego programu obsługi dla kilku instancji kontrolki. –

+0

Czy istnieje cokolwiek innego, żeby to zadziałało? w jakiś sposób dodana deklaratywnie obsługa zdarzeń nie działa – Nap

1

Ujawnij cały obiekt TextBox jako własność publiczną w kontroli użytkownika i zasubskrybuj jego wydarzenia zgodnie z oczekiwaniami.
Przykład:

class myUserControl: UserControl { 
private TextBox _myText; 
public TextBox MyText { get {return _myText; } } 

}

Po wykonaniu tej czynności można zapisać się na którykolwiek z jego zdarzeń tak:

theUserControl.MyText.WhatEverEvent += ... 

Nadzieja to pomaga!

+0

dzięki, zrobiłem coś podobnego jak teraz. Szukałem eleganckiego rozwiązania, które zostało przedstawione powyżej. Dziękuję za pomoc. + 1 –

Powiązane problemy