Question

Je suis nouveau à UserControls, et tout en développant mon propre contrôle, j'ai trouvé un problème montrant les événements de mon contrôle dans la grille de la propriété au moment de la conception. Si j'ai quelques événements dans mon contrôle, je veux les voir dans la grille de la propriété et si je double-clique que je veux avoir un gestionnaire, de la même manière que Microsoft fait pour ses contrôles.

Était-ce utile?

La solution

Ils doivent apparaître automatiquement si je ne me trompe pas. Assurez-vous que vous avez construit votre projet si, ou les changements ne se propage pas à ouvrir les concepteurs. Et assurez-vous qu'il est public événement aussi. (Des événements privés / protégés devraient légitimement ne pas apparaître parce qu'ils ne sont pas accessibles.)

Une chose que vous pouvez faire pour rendre la plus belle expérience de conception de votre utilisateur est de faire quelque chose comme ce qui suit:

    [Description("This event is raised when the user presses the enter key while the control has focus."),
    Category("Key")]
    public event EventHandler EnterPressed;

Le bit « description » met un joli message dans le panneau de description de la fenêtre de propriétés. Le bit « catégorie » met dans une certaine catégorie (la valeur par défaut est Misc. À la fin).

Par ailleurs, vous n'avez pas spécifié une langue ou de l'environnement, de sorte que le ci-dessus peut être nécessaire de modifier si ce n'est pas C # dans Visual Studio 2005 +.

Autres conseils

Je l'habitude d'utiliser ce modèle pour créer un événement personnalisé dans UserControls:

    #region MyEvent CUSTOM EVENT

    protected virtual void OnMyEvent(MyEventEventArgs e)
    {
        if (MyEvent != null)
            MyEvent(this, e);
    }

    public delegate void MyEventHandler(object sender, MyEventEventArgs e);
    public event MyEventHandler MyEvent;

    public class MyEventEventArgs : EventArgs
    {

    }

    #endregion MyEvent CUSTOM EVENT

a la même convention de nommage des événements Microsoft, vous pouvez tirer OnMyEvent à l'intérieur de votre contrôle, ont EventArgs personnalisés, gérer MyEvent d'autres contrôles.

Vous devriez être délégué à utiliser UserControl et soulever à la page principale (page ASPX) .Si cette façon ne fonctionne pas, vous devriez être prudent lorsque vous inscrire UserControlID.It besoin différent avec d'autres UserControl.Each UserControl ont besoin d'un ID.

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