ASP.NET UserControl și DefaultEvent

Contur

OK, am Google și am așteptat deja o mare grăsime NU! Dar m-am gândit că ar trebui să o întreb deoarece știu uneori că poate fi o mică bijuterie a cunoașterii care se ascunde în capetele oamenilor ^ ^

Lucrez în anumite exerciții într-o carte de studiu, iar acest exercițiu este Controlul utilizatorului. Am cobbled un control și aș dori să setați DefaultEvent pentru el (făcând acest lucru pentru controalele anterioare), așa că atunci când am dublu-clic pe el, evenimentul implicit creat este ceea ce am specificat-o să fie.

NOTE: This is a standard User Control (.ascx), NOT a custom rendered control.

Codul curent

Here is the class & event definition:

[System.ComponentModel.DefaultEvent("OKClicked")]
public partial class AddressBox : System.Web.UI.UserControl
{
    public event EventHandler OKClicked;

Rezultatul curent

Acum, când dau dublu clic pe control când se află pe o pagină ASPX, se creează următoarele:

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

Nu exact ceea ce mă așteptam! Deci, întrebarea mea:

Este posibil să definiți un DefaultEvent pentru un UserControl? Este un hack? Dacă nu este acceptat, există vreun motiv?


Side Note: How do we put underscores in code? I cant seem to put and escape char in?

0
fr hi bn

2 răspunsuri

Iată un răspuns posibil , fără testare (cum a făcut Martin).

În reflector, veți vedea că DefaultEventAttribute permite să fie moștenit. În reflector, vedeți că clasa UserControl are evenimentul implicit setat la evenimentul Încărcare.

Deci, motivul posibil este că, deși decorați controlul utilizatorului cu evenimentul implicit al OKClick, VS ar putea să creadă că evenimentul implicit este încărcat, deoarece este moștenit de la UserControl, al cărui eveniment implicit este Load.

Doar un nivel înalt de ghicit la ce s-ar putea întâmpla.

0
adăugat

OK, am verificat acest lucru, Moștenind de la WebControl mai degrabă decât UserControl .. Toate au lucrat bine.

Se pare că Darren Kopp ia coroana pentru asta! Vă mulțumim pentru intrare!

0
adăugat