2010-10-19 4 views
1

Bref, je voudrais prendre mes commandes utilisateur qui sont chargées dynamiquement et les coller dans une liste qui fait référence à l'objet réel qui a été chargé. Je peux donc aller dans la liste et tirer les résultats de l'usercontrol. Je voudrais utiliser mycontrol.GetResult() et il référencera alors le contrôle et attrapera les résultats du formulaire qui a été rempli, lequel les résultats seront retournés comme chaîne. Je ne veux pas initialiser un nouveau contrôle du même type car je ne serai pas capable de recevoir mes résultats à ce moment-là. Aucune suggestion?Comment puis-je stocker le contrôle actuel dans une liste?

Merci!

Répondre

4

Il suffit de créer une liste des contrôles:

var controls = new List<Control>(); 

foreach(var control in Page.Controls) 
{ 
    controls.Add(control); 
} 

Vous pouvez ensuite utiliser cette liste pour faire référence à chacun des contrôles au besoin (ce qui est un exemple simple ... votre code pour remplir la liste sera très probablement être plus compliqué).

0

Qui ajoute les contrôles par programme? La page ou un contrôle utilisateur? Ce composant pourrait le faire. Sinon, une autre astuce consiste à dire qu'un contrôle utilisateur charge dynamiquement d'autres contrôles utilisateur. Vous pouvez donner à la page une définition d'interface, par exemple IDynamicControlHolder qui a un type List, et le faire dans le contrôle dynamique (ou ailleurs).

if (this.Page is IDynamicControlHolder) 
    // change this to the appropriate reference 
    ((IDynamicControlHolder)this.Page).DynamicControls.Add(this); 
+0

J'ai un contrôle de l'assistant, onInit recherche un répertoire et ajoute tous les formulaires utilisateur qui ont été déposés. L'étape de l'assistant est donc chargée dynamiquement, puis la commande usercontrol est chargée dynamiquement dans l'étape de l'assistant. J'ai déjà une liste mais elle ne contient pas le contrôle juste l'objet que j'ai créé pour les propriétés de contrôle à stocker. – Tony

+0

"il ne tient pas le contrôle juste l'objet" - par contrôle je suppose que vous voulez dire le contrôle de l'utilisateur, pas l'étape de l'assistant. La description ci-dessus que je vous ai donnée est une façon auto-enregistrée de faire les choses; tant que la page implémente une interface (ce qui nécessite de renvoyer une instance de la liste nommée DynamicControls), le contrôle utilisateur, en OnLoad ou peut-être même OnInit fonctionnerait, s'enregistrerait lui-même. –

0

J'avais déjà un code similaire créé et les contrôles chargés dans une liste, mais je ne savais pas comment obtenir les résultats des formulaires replacés dans mon objet. Après avoir vu des exemples de code, j'ai réalisé que je le faisais déjà, donc il devait y avoir une meilleure façon d'obtenir ce que je veux. J'ai manipulé une de mes méthodes existantes et maintenant je l'utilise pour charger les résultats dans mon objet lorsque l'utilisateur va à l'écran de vérification. Cela fonctionne très bien, merci de confirmer pour moi que je le faisais bien.

Questions connexes