Domanda

Contorno

OK, l'ho cercato su Google e mi aspettavo già un grosso grasso NO!! Ma ho pensato che avrei dovuto chiedere perché so che a volte può esserci uno strano piccolo gioiello di conoscenza in agguato nella testa delle persone ^_^

Sto svolgendo alcuni esercizi in un libro di studio e questo esercizio particolare è Controlli utente.Ho messo insieme un controllo e vorrei impostare il DefaultEvent per esso (dopo averlo fatto per i controlli precedenti), quindi quando faccio doppio clic su di esso, l'evento predefinito creato è quello che ho specificato.

NOTA: Questo è un controllo utente standard (.ascx), NON un controllo con rendering personalizzato.

Codice attuale

Ecco la definizione di classe ed evento:

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

Risultato attuale

Ora, quando faccio doppio clic sul controllo quando si trova su una pagina ASPX, viene creato quanto segue:

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

Non proprio quello che mi aspettavo!Quindi, la mia domanda:

È possibile definire un DefaultEvent per un UserControl?È un trucco?Se [non] è supportato, c'è un motivo?


Nota a margine:Come inseriamo i caratteri di sottolineatura nel codice?Non riesco a inserire e sfuggire a char?

È stato utile?

Soluzione

Ecco un possibile rispondi, senza provare (come ha fatto Martin).

Nel reflector, vedrai che DefaultEventAttribute può essere ereditato.In reflector, vedi che la classe UserControl ha il suo evento predefinito impostato sull'evento Load.

Quindi la possibile ragione è che anche se stai decorando il tuo controllo utente con l'evento predefinito di OKClick, VS potrebbe comunque pensare che l'evento predefinito sia load, poiché viene ereditato da UserControl il cui evento predefinito è Load.

Solo un'ipotesi di alto livello su cosa potrebbe succedere.

Altri suggerimenti

OK, ho controllato questo, ereditando da WebControl anziché da UserControl..Tutto ha funzionato bene.

Sembra Darren Kopp prende la corona per questo!Grazie per l'input!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top