2008-12-18 5 views

Répondre

11

Il y a un moyen beaucoup plus simple qui est un passage direct.

Essayez ceci:

public event EventHandler SelectedIndexChanged 
    { 
     add { this.TargetControl.SelectedIndexChanged += value; } 
     remove { this.TargetControl.SelectedIndexChanged -= value; } 
    } 

[Modifier] À moins bien sûr que vous devez injecter une logique personnalisée.

+0

A travaillé comme un charme. Merci beaucoup! – NikolaiDante

+0

J'utilisais cette méthode sans succès. Mon problème s'est avéré être un problème de convention de dénomination entre ma propriété de contrôle et mon attribut de balisage. Pour les autres, n'oubliez pas que OnSelectedIndexChanged dans le balisage correspondra à la propriété SelectedIndexChanged de votre contrôle. – cweston

4

Voici ce que vous faites. Tout d'abord déclarer un événement comme celui-ci:

public event EventHandler SelectedIndexChanged; 

Puis, à l'intérieur, le crochet jusqu'à la SelectedIndexChangedEvent du DropDownList. Dans votre gestionnaire d'événements faire quelque chose comme ceci:

 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      if (this.SelectedIndexChanged != null) 
      { 
       this.SelectedIndexChanged(sender, e); 
      } 
     } 

Tout ce que vous faites vraiment est enveloppant l'événement d'origine et re-soulever.

EDIT: Voir la réponse de Brian Rudolph. C'est en fait une façon très simple de le faire.

+0

Ok, c'est logique. Je commençais à être en désordre avec les délégués. C'est exactement ce que je cherchais. Je vais tenter le coup le matin - merci! – NikolaiDante

Questions connexes