Question

Contour

OK, j'ai cherché ça sur Google et je m'attends déjà à un gros gros NON!! Mais j'ai pensé que je devrais demander car je sais que parfois il peut y avoir un petit bijou de connaissance qui se cache dans la tête des gens ^_^

Je suis en train de réaliser quelques exercices dans un livre d'étude, et cet exercice particulier est celui des contrôles utilisateur.J'ai bricolé un contrôle et j'aimerais définir le DefaultEvent pour celui-ci (après l'avoir fait pour les contrôles précédents), donc lorsque je double-clique dessus, l'événement par défaut créé est celui que je spécifie.

NOTE: Il s'agit d'un contrôle utilisateur standard (.ascx), PAS un contrôle rendu personnalisé.

Code actuel

Voici la définition de la classe et de l'événement :

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

Résultat actuel

Désormais, lorsque je double-clique sur le contrôle lorsqu'il se trouve sur une page ASPX, ce qui suit est créé :

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

Pas tout à fait ce à quoi je m'attendais !Alors, ma question :

Est-il possible de définir un DefaultEvent pour un UserControl ?Est-ce un hack ?S'il n'est [pas] pris en charge, y a-t-il une raison ?


Note latérale:Comment mettre des traits de soulignement dans le code ?Je n'arrive pas à mettre et à échapper au caractère ?

Était-ce utile?

La solution

Voici une possible répondre, sans tester (comme Martin l'a fait).

Dans Reflector, vous verrez que le DefaultEventAttribute se permet d'être hérité.Dans Reflector, vous voyez que la classe UserControl a son événement par défaut défini sur l'événement Load.

La raison possible est donc que même si vous décorez votre contrôle utilisateur avec l'événement par défaut OKClick, VS peut toujours penser que l'événement par défaut est Load, car il est hérité de UserControl dont l'événement par défaut est Load.

Juste une hypothèse de haut niveau sur ce qui pourrait se passer.

Autres conseils

OK, j'ai vérifié ceci, héritant de WebControl plutôt que de UserControl.Tout a bien fonctionné.

Ressemble à Darren Kopp remporte la couronne pour celui-ci !Merci pour la contribution !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top