9

Questa è una piccola domanda di Visual Studio. Sento che con tutto l'utile Intellisense ci dovrebbe essere qualcosa da assistere ma non riesco a trovarlo.Come aggiungere Eventi pagina per ASP.NET in Visual Studio 2008

Ho creato una pagina con un codebehind in ASP.NET C# in VS2008 e genera automaticamente un metodo di evento PageLoad, ovviamente. Bene, cosa succede se voglio aggiungere metodi per altri eventi oltre a PageLoad? Penserei che ci sarebbe un elenco sulla pagina Foo.aspx di possibili gestori di eventi del metodo da aggiungere. Non ci sono forse più come PageInit, PageDispose, (o equiv) ecc ...? Dove posso trovarli?

EDIT - Posso ovviamente cercare i nomi dei metodi nell'api. Sto cercando un collegamento pratico per aggiungere questi in Visual Studio. Se ne genera uno, non può farlo altri?

risposta

26
  • In Esplora soluzioni, fare clic sulla pagina e selezionare "Visualizza componente di progettazione" dal menu contestuale
  • aprire le proprietà del pannello/finestra (premere F4)
  • ora fare clic sulla freccia gialla/icona del flash e vedrete un elenco di tutti gli eventi di pagina
  • doppio clic l'evento per il quale si desidera aggiungere un gestore

sono abbastanza sicuro che ci fosse un altro w ay (a partire dalla vista del designer), ma non riesco a riprodurlo.

In genere non utilizzo i gestori di eventi della pagina, ma sostituisco i metodi corrispondenti (ad esempio OnLoad anziché Page_Load). Per implementare uno di questi override, è sufficiente digitare "override" nel code-behind e premere spazio per ottenere un elenco di metodi che è possibile ignorare.

+0

Lavori in VS2017! –

3

come scorciatoia per vedere cosa è disponibile, è sempre possibile digitare semplicemente "Pagina". e poi dare un'occhiata alla lista in intellisense. Puoi quindi selezionarne uno, premere + = TabScheda per far sì che generi lo stub per te. una volta creato lo stub, dovresti eliminare la riga "Page.event + =" ovunque sia stata creata. Una specie di soluzione alternativa, ma può funzionare abbastanza velocemente una volta che ne hai preso il controllo.

+0

Hokey ma non è un pokey - funziona in modo rapido e facile da ricordare. Grazie! – McArthey

+0

Funziona bene. Poiché l'evento viene gestito da un riferimento denominato 'Page', il gestore di eventi generato viene tra l'altro identificato correttamente, ad esempio:' Page_Load' per l'evento 'Load'. L'unica parte difficile è che questo deve essere fatto da "scope del metodo" poiché non è possibile accedere alla proprietà 'Pagina' nell'ambito della classe. –

3

Con il prezioso ReSharper installata (potrebbe funzionare senza) posso solo scrivere:

override 

e quando ho colpito spazio Intellisence si apre con un elenco di tutti gli eventi che posso ignorare come OnInit, OnPreRender , ecc.

+1

In VS2010, non ho installato ReSharper e sembra che lo faccia comunque. Penso che questo sia l'approccio più semplice di tutti qui menzionato finora. –

+0

Funziona, ma ci sono sottili differenze tra la gestione degli eventi e l'override dei metodi On_. –

0

Nella finestra del codice sorgente, dalla casella combinata dell'elenco oggetti, selezionare il controllo desiderato (pagina). Quindi, dalla casella combinata dell'elenco eventi che si trova a destra della casella combinata dell'elenco oggetti precedente, selezionare l'evento desiderato. Visual Studio creerà il gestore di eventi per te.

0

Se si vuole non utilizzare il modo in cui, come descritto da M4N ma tramite il codice:

Nel PageName.aspx.cs;

private void InitializeComponent() 
{ 

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

} 

poi nello stesso file aggiungere:

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

UPDATE (dal commento di Sahuagin): Questo non genererà un gestore di eventi con il nome appropriato. Il gestore di eventi deve essere denominato, ad esempio, Page_Load. Questo sarà il nome dopo la tua classe piuttosto che dopo Pagina, e quindi non sarà effettivamente collegato alla tua pagina

+0

Inoltre, questo non genererà un gestore di eventi con il nome appropriato. Il gestore di eventi deve essere denominato, ad esempio, 'Pagina_Load'. Questo lo chiamerà dopo la tua classe piuttosto che dopo 'Pagina', e quindi non sarà effettivamente collegato alla tua pagina. –

+0

Inizialmente avevo detto che il gestore di eventi deve essere 'protected' e non' private'. Questo può o non può essere necessario a seconda della situazione. –

+0

grazie, l'ho aggiunto anche al post –

-1

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

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

Questo imposterà il nodo figlio controllato vero nella pagina dell'evento carico di pagina

felice di codifica

+0

cosa? a meno che non mi sbagli, questo non ha nulla a che fare con la domanda –

Problemi correlati