Vra

Buitelyn

OK, ek het dit op Google gedoen en verwag reeds 'n groot vet GEEN!! Maar ek het gedink ek moet vra, want ek weet soms kan daar 'n vreemde klein juweel van kennis in mense se koppe rondsluip ^_^

Ek werk my pad deur 'n paar oefeninge in 'n boek vir studie, en hierdie spesifieke oefening is Gebruikerskontroles.Ek het 'n kontrole saamgevoeg en wil graag die DefaultEvent daarvoor stel (nadat ek dit vir vorige kontroles gedoen het), so wanneer ek dit dubbelklik, is die verstekgebeurtenis wat geskep word, wat ek ook al spesifiseer.

LET WEL: Dit is 'n standaard gebruikersbeheer (.ascx), NIE 'n pasgemaakte gelewerde kontrole.

Huidige kode

Hier is die klas- en gebeurtenisdefinisie:

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

Huidige resultaat

Nou, wanneer ek dubbelklik op die kontrole wanneer dit op 'n ASPX-bladsy is, word die volgende geskep:

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

Nie heeltemal wat ek verwag het nie!So, my vraag:

Is dit moontlik om 'n DefaultEvent vir 'n User Control te definieer?Is dit 'n hack?As dit [nie] ondersteun word nie, is daar 'n rede?


Kantaantekening:Hoe plaas ons onderstrepe in kode?Ek kan blykbaar nie char insit en ontsnap nie?

Was dit nuttig?

Oplossing

Hier is 'n moontlik antwoord, sonder om te toets (soos Martin gedoen het).

In reflektor sal jy sien dat die DefaultEventAttribute homself toelaat om te geërf.In reflektor sien jy dat die UserControl-klas sy verstekgebeurtenis op die Load-gebeurtenis gestel het.

Die moontlike rede is dus dat alhoewel jy jou gebruikersbeheer met die verstekgebeurtenis van OKClick versier, kan VS dalk steeds dink dat die verstekgebeurtenis laai is, aangesien dit geërf word van UserControl wie se verstekgebeurtenis Laai is.

Net 'n hoë vlak raaiskoot oor wat kan gebeur.

Ander wenke

OK, ek het dit nagegaan, Erf van WebControl eerder as UserControl.Alles het goed gewerk.

Lyk soos Darren Kopp neem die kroon vir hierdie een!Dankie vir die insette!

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top