9

Ceci est un peu une question Visual Studio. Je pense avec tout l'Intellisense utile qu'il devrait y avoir quelque chose à aider mais je n'arrive pas à le trouver.Comment ajouter des événements de page pour ASP.NET dans Visual Studio 2008

J'ai fait une page avec un codebehind dans ASP.NET C# dans VS2008 et il génère automatiquement une méthode d'événement PageLoad, bien sûr. Eh bien, que faire si je veux ajouter des méthodes pour plus d'événements en plus de PageLoad? Je pense qu'il y aurait une liste sur la page Foo.aspx des gestionnaires d'événements de méthodes possibles à ajouter. N'y a-t-il pas plus de pages comme PageInit, PageDispose, (ou equiv) etc ...? Où puis-je les trouver?

EDIT - Je peux bien sûr rechercher les noms de méthodes dans l'API. Je suis à la recherche d'un raccourci pratique pour les ajouter dans Visual Studio. S'il en génère un, ne peut-il pas en faire d'autres?

Répondre

26
  • Dans l'explorateur de solution, clic droit sur la page et sélectionnez dans le menu contextuel « Afficher concepteur de composants »
  • ouvrir le panneau de propriétés/fenêtre (appuyez sur F4)
  • cliquez maintenant la flèche jaune/icône du flash et vous verrez une liste de tous les événements page
  • double-cliquez sur l'événement pour lequel vous souhaitez ajouter un gestionnaire

Je suis sûr qu'il y avait un autre w ay (à partir de la vue concepteur), mais je ne peux pas le reproduire.

Je n'utilise généralement pas les gestionnaires d'événements de page, à la place je remplace les méthodes correspondantes (par exemple OnLoad au lieu de Page_Load). Pour implémenter l'un de ces remplacements, vous pouvez simplement taper "override" dans le code-behind et appuyez sur space pour obtenir la liste des méthodes que vous pouvez remplacer.

+0

Works dans VS2017! –

3

en tant que raccourci pour voir ce qui est disponible, vous pouvez toujours taper "Page". puis jetez un coup d'oeil à la liste en intellisense. Vous pouvez alors en choisir un, appuyez sur + = TabTab pour qu'il génère le talon pour vous. Une fois le stub créé, vous devez supprimer la ligne "Page.event + =" où que vous l'ayez créée. Une sorte de solution de contournement, mais peut travailler assez vite une fois que vous avez compris.

+0

Hokey mais pas pokey - fonctionne rapidement et facile à retenir. Merci! – McArthey

+0

Cela fonctionne bien. Puisque l'événement est géré à partir d'une référence nommée 'Page', le gestionnaire d'événements généré est accessoirement nommé correctement, c'est-à-dire:' Page_Load' pour l'événement 'Load'. La seule partie délicate est que cela doit être fait depuis "method scope" puisque vous ne pouvez pas accéder à la propriété 'Page' à la portée de la classe. –

3

Avec le ReSharper précieux installé (peut fonctionner sans) Je peux simplement taper:

override 

et quand je frappe l'espace IntelliSence apparaît avec une liste de tous les événements que je peux passer outre, comme OnInit, OnPreRender

+1

Dans VS2010, ReSharper n'est pas installé et il semble que cela fonctionne de toute façon. Je pense que c'est l'approche la plus facile de tous mentionnés ici jusqu'à présent. –

+0

Cela fonctionne, mais il existe des différences subtiles entre la gestion des événements et le remplacement des méthodes On_. –

0

Dans la fenêtre de code source, dans la liste déroulante Liste d'objets, sélectionnez le contrôle souhaité (page). Ensuite, dans la liste déroulante de la liste d'événements située à droite de la liste déroulante de la liste d'objets précédente, sélectionnez l'événement souhaité. Visual Studio créera le gestionnaire d'événements pour vous.

0

Si l'on veut de ne pas utiliser la manière décrite par M4N mais par code:

Dans le PageName.aspx.cs;

private void InitializeComponent() 
{ 

    // this.LifeCycle += .. // Use intellisense to see alternatives easily 
    this.PreRender += new System.EventHandler(this.EventFunctionName); 

} 

puis dans le même fichier ajouter:

private void EventFunctionName(object sender, EventArgs e) 
{ 
    // Code.. 
} 

UPDATE (de commentaire par sahuagin): Cela ne génère pas un gestionnaire d'événements avec le nom approprié. Le gestionnaire d'événements doit être nommé, par exemple, Page_Load. Cela le nommera après votre classe plutôt qu'après Page, et donc il ne sera pas réellement connecté à votre page

+0

En outre, cela ne générera pas non plus un gestionnaire d'événements avec le nom approprié. Le gestionnaire d'événements doit être nommé, par exemple, 'Page_Load'. Cela le nommera après votre classe plutôt qu'après 'Page', et donc il ne sera pas connecté à votre page. –

+0

J'avais d'abord dit que le gestionnaire d'événements devait être protégé et non privé. Cela peut ou non être nécessaire selon la situation. –

+0

merci, je l'ai ajouté à la poste aussi –

-1

TreeScheme.Nodes [0] .ChildNodes [0] .Checked = true;

treeviewid.node[0].childnodes[0].checked=true; 

Cela va régler le nœud enfant contrôlé vrai événement de chargement de la page de la page

heureux de codage

+0

quoi? à moins que je me trompe, cela n'a rien à voir avec la question –