2009-08-16 9 views

Répondre

3

En plus de la réponse de Iordan, si vous ne savez pas exactement où sur votre formulaire la zone de texte est, alors cette méthode d'extension devrait aider beaucoup. Remarque, Form hérite de Control quelque part en bas de la piste, de sorte que vous pouvez l'appeler à partir de cela, ou n'importe quel contrôle sur votre formulaire.

public static class ExtensionMethods 
{ 
    public static Control FindControl(this Control root, string name) 
    { 
     foreach (Control c in root.Controls) 
     { 
      // Check this control 
      if (c.Name == name) return c; 

      // Check this controls subcontrols 
      Control tmp = c.FindControl(name); 
      if (tmp != null) return tmp; 
     } 

     return null; 
    } 
} 

Si cette encore est pas assez souple pour vous, alors vous pouvez parcourir System.Windows.Forms.Application.OpenForms

3

Si vous connaissez le nom de la zone de texte et de ses contrôles parents, vous pouvez faire comme ceci:

TextBox tb = (TextBox)parent.Controls["name"]; 
2

Puisque vous semblez avoir un contrôle sur le processus de création, a mis une référence dans un dictionnaire.

TextBox txt = DynamicCreate(name); 
map[name] = txt; 
this.Controls.Add(txt); 

Tout ce que vous avez à faire est de le rechercher dans votre dictionnaire, au lieu de faire défiler tous les contrôles du formulaire.

TextBox txt = map ["nom"];

Questions connexes