2010-02-22 17 views
6

Mam kontrolę użytkownika z przyciskiem o nazwie upload. Impreza przycisk kliknij wygląda następująco:Kontrola użytkownika Zdarzenia

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    // Upload the files to the server 
} 

Na stronie, gdzie kontrola użytkownik jest obecny, gdy użytkownik kliknie na przycisk wysyłania chcę wykonać jakąś operację zaraz po kod zdarzenia kliknięcie przycisku jest wykonany w kontrola użytkownika. Jak dotknąć zdarzenia kliknięcia po zakończeniu jego pracy?

Odpowiedz

8

Musisz utworzyć wydarzenie w kontroli użytkownika, coś jak:

public event EventHandler ButtonClicked; 

, a następnie w metodzie swojej pożaru zdarzenia ...

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    // Upload the files to the server 

    if(ButtonClicked!=null) 
     ButtonClicked(this,e); 
} 

Wtedy będzie można dołączyć do zdarzenia ButtonClicked kontrolki użytkownika.

+1

A następnie upewnij się, że strona zawierająca instrukcję użytkownika nasłuchuje zdarzenia .... this.myUploadControl.ButtonClicked + = new EventHandler (MyUploadControl_ButtonClicked); Gdzie MyUploadControl_ButtonClicked jest zadeklarowana w klasie Strona jako procedura obsługi zdarzenia. –

0

Tworzenie własności publicznej w kodzie UserControl za:

public Button btn 
    { 
     get { return this.Button1; } 
    } 

Następnie na page_load można go używać jak:

WebUserControl11.btn.Click += (s, ea) => { Response.Write("Page Write"); }; 
0

Zamiast pisać obsługi zdarzeń po prostu zadzwonić do innego zdarzenia, można zamiast bezpośrednio połącz zdarzenia ze sobą za pomocą jednoznacznej implementacji zdarzenia:

public event EventHandler ButtonClicked 
{ 
    add { btnUpload.Click += value; } 
    remove { btnUpload.Click -= value; } 
} 

Teraz każdy, kto subskrybuje twoje zdarzenie ButtonClicked, bezpośrednio subskrybuje zdarzenie Click kontrolki btnUpload. Uważam, że jest to znacznie bardziej zwięzły sposób na wdrożenie tego.

Powiązane problemy