2010-04-15 5 views
1

Je suis en boucle à travers les contrôles de page comme sien boucle par page Commandes - en utilisant la même logique pour les types de contrôle multiples

 foreach (Control ctrl in control.Controls) 
     { 
      if (ctrl is System.Web.UI.WebControls.TextBox || ctrl is System.Web.UI.WebControls.Label) 
      { 
      } 
     } 

Je veux être en mesure de déclarer une variable dans cette instruction if qui est du même type comme 'ctrl' dans le foreach afin que je puisse inspecter les propriétés du contrôle et effectuer quelques manipulations de cette façon. Je ne veux pas dupliquer du code, par exemple, si 'ctrl' est une zone de texte, ou label, car j'exécuterais le même code pour ces 2 types de contrôle web.

Toute aide qui me conduit dans la bonne direction est grandement appréciée!

Merci

+0

Comment peut-il être? TextBox et Label sont deux types de classes différents? Ils ont des propriétés différentes (sauf celles dérivées des classes de base communes)! Sans le typage individuel de chacun d'entre eux (ce que vous dites en dupliquant le code), comment pouvez-vous écrire un code compréhensible et portable? – Nayan

Répondre

0

Essayez d'utiliser l'interface ITextControl:

foreach (Control ctrl in control.Controls) 
{ 
    ITextControl text = ctrl as ITextControl; 
    if (text != null) 
    { 
     // now you can use the "Text" property in here, 
     // regardless of the type of the control. 
    } 
} 

Vous pouvez également utiliser la méthode d'extension OfType ici pour nettoyer un peu:

foreach (ITextControl text in control.Controls.OfType<ITextControl>()) 
{ 
    // now you can use the "Text" property in here, 
    // regardless of the type of the control. 
} 
+0

Je veux accéder aux propriétés de 'ctrl' telles que CssClass, et la conversion en ITextControl ne me donne pas l'hébergement (que j'ai vu) pour cela. Merci pour la réponse rapide Andrew! – TheGeekYouNeed

+0

Essayez d'utiliser 'WebControl' alors au lieu de' ITextControl' qui vous donnera accès à 'CssClass' au moins. L'astuce consiste à trouver le plus petit dénominateur commun entre vos types. –

+0

ok - c'est la direction que je me suis dirigé, aussi - merci de confirmer ma pensée :) – TheGeekYouNeed

Questions connexes