2010-12-01 4 views

Répondre

0

Jetez le parent du contrôle que le type spécifique de votre page, puis appeler la méthode.

3

Vous ne devriez pas écrire un contrôle qui repose sur une méthode se trouvant sur la page, donc la meilleure chose à faire serait d'exposer et gérer un événement du contrôle enfant. Ajoutez ce qui suit à votre contrôle enfant:

public event OnSomethingHandler Something; 
public delegate void OnSomethingHandler(ChildControl sender); 

Puis, quand vous voulez tirer la méthode de page en question, le feu de l'événement:

public void FireParentMethod() 
{ 
    if (Something != null) 
    { 
     Something(this); 
    } 
} 

Tout ce que vous devez faire est de gérer l'événement sur la page (dans le balisage ou dans le code comme suit):

childUserControl.Something+= 
    new ChildControl.OnSomethingHandler(ChildControl_OnSomething); 

et ajoutez le gestionnaire au code derrière:

protected void ChildControl_OnSomething(ChildControl sender) 
{ 
    FirePageMethod(); 
} 
+0

Oui, certainement le moyen de le faire. Techniquement, cependant, vous pourriez faire ce que le PO a demandé. :) –

+1

@Esteban Araya - Vous avez déjà donné cette réponse :) il n'y avait donc aucun intérêt à ce que je le duplique. Mais je préfèrerais donner une réponse qui encourage la bonne pratique en ce qui concerne le freinage des règles de conception de base. – GenericTypeTea

Questions connexes