Domanda

È possibile ottenere un elenco di eventi di controllo che verranno generati prima che si verifichino, ad esempio all'interno del gestore Page_Load ?

Ad esempio, se si fa clic su un pulsante, posso capirlo prima che venga chiamato il gestore eventi button_click ?

È stato utile?

Soluzione

Hai fatto una domanda davvero difficile ... la ragione di ciò è che ci sono diversi modi in cui gli eventi spariranno.

1) __EVENTTARGET (come menzionato sopra) 2) Se il nome del tuo pulsante è MyButt, vedrai " MyButt = " nella stringa di query. 3) Quando ogni controllo (come, ad esempio, una casella di testo) controlla la richiesta per vedere se il suo valore in ViewState è diverso da quello pubblicato, allora un " Text_Changed " sparerà.

Ma puoi usare # 1 e # 2 per controllare alcuni posti.

Altri suggerimenti

Sfortunatamente, interrogare il valore __EVENTTARGET non farà il trucco. Spesso, quel valore sarà vuoto. L'elaborazione postback prende alcune decisioni su quali eventi raccogliere in base a più del valore target dell'evento (se presente) testando i valori dello stato di controllo rispetto ai valori inviati dal modulo (come per una casella di testo) determina se gli eventi come TextChanged devono essere generati .

Oltre a collegare effettivamente un gestore di eventi a tutti i controlli per cui desideri acquisire eventi, non credo che ci sia modo di determinarlo. Potrebbe essere possibile fare sostanzialmente ciò che fa il framework. Dovresti farlo tra quando i controlli sono stati creati e viewstate è stato ripristinato ma prima che i valori registrati vengano elaborati. È possibile confrontare i valori di controllo correnti (da viewstate) con i valori pubblicati, determinando essenzialmente quali eventi verrebbero generati.

Qual è il tuo obiettivo con questo? Forse esiste una soluzione migliore.

Quanto segue contiene l'ID alterato per un pulsante quando si fa clic.

Page.Request.Form["__EVENTTARGET"]

Ecco un esempio che credo risponda al tuo domanda.

Un altro modo sarebbe quello di impostare alcuni punti di interruzione durante il debug.

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