2010-06-30 11 views
1

Comment créer un nouvel événement dans une classe de pages de base qui se déclenche après que toutes les pages dérivées aient déclenché leurs événements de chargement mais avant, tous les contrôles déclenchent leurs événements de chargement.Comment créer un événement de page de base qui se déclenche après l'événement de chargement de la page dérivée?

Le code suivant déclenche l'événement avant l'événement de chargement de la page dérivée. Je veux déclencher l'événement après l'événement de chargement de page dérivée mais avant tous les événements de charge de commande:

Classe de base:

Public Event FirstLoad(ByVal sender As Object, ByVal e As System.EventArgs) 

Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     RaiseEvent FirstLoad(sender, e) 
    End If 
End Sub 

classe dérivée:

Private Sub Page_FirstLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.FirstLoad 

    'Stuff here happens before controls load but only on first page loads' 

End Sub 
+0

La façon dont je l'ai généralement vu ce traité est d'ajouter base.Load() à la fin des pages dérivées Charger des événements, mais je devine Vous êtes après quelque chose de plus DRY – heisenberg

+0

@kekekela Ouais, je voudrais supprimer le besoin de pages dérivées pour savoir que cela se produit. –

Répondre

1

Je suis arrivé ce comportement au travail Correctement en remplaçant la méthode OnLoad de la page de base et dans cet appel la méthode OnLoad de la base comme d'habitude, puis augmentez l'événement que vous souhaitez déclencher après que toutes les charges se sont produites.

classe de base:

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) 
    MyBase.OnLoad(e) 
    If Not IsPostBack Then 
     RaiseEvent FirstLoad(sender, e) 
    End If 
End Sub