2015-10-09 1 views
0

Je cherche juste à le savoir pour essayer de nettoyer mon code, et aussi pour référence future.Utiliser la boucle pour effacer. textBox [i] .Clear(). Est-ce possible?

J'ai un certain nombre de textBoxes.

 tbPart1.Clear(); 
     tbPart2.Clear(); 
     tbPart3.Clear(); 
     tbPart4.Clear(); 
     tbPart5.Clear(); 
     tbPart6.Clear(); 
     tbPart7.Clear(); 

Y a-t-il un moyen d'utiliser une boucle pour remplacer les nombres?

J'ai essayé ceci, mais je n'ai aucune idée de comment je pourrais exécuter la chaîne.

 for (int i = 1; i == 7; i++) 
     { 
      string p = "tbPart" + i.ToString() + ".Clear"; 
     } 
+0

Est-ce t Il n'y a que des zones de texte dans votre application? Est-ce Forms, WPF, ASP ou autre chose? –

+0

Désolé, Windows Form, C#. Ma faute. J'ai environ 20 ou plus pour effacer. Ce ne sont que quelques-uns. – Nezz

+1

pour (int i = 1; i <= 7; i ++)!?!? – kame

Répondre

3

Non, vous ne pouvez pas le faire de cette façon. Mais vous pouvez définir un tableau ou une liste où vous placez les contrôles, puis les effacer. Par exemple:

List<TextBox> textboxes = new List<TextBox>(); 
textboxes.Add(tbPart1); 
textboxes.Add(tbPart2); 
textboxes.Add(tbPart3); 
... 

Puis, quand vous voulez les effacer

foreach (var tb in textboxes) 
    tb.Clear(); 
2
TextBox[] boxes = new [] { 
    tbPart1, 
    tbPart2, 
    tbPart3, 
    tbPart4, 
    tbPart5, 
    tbPart6, 
    tbPart7 
}; 

for (int i = 0; i < boxes.Length; i++) 
{ 
    boxes[i].Clear(); 
} 
+0

Je suis plus à la recherche d'un moyen de nettoyer mon code et supprimer tout le code de la zone de texte et avoir seulement 1 ou 2 lignes, comme j'ai environ 20 autres zones de texte dont j'ai besoin effacé, et il semble malpropre. Cheers – Nezz

0

Je pense que vous devriez utiliser un tableau de zone de texte, vous pouvez alors faire une boucle dépend du nombre de numéros de textboxes.

+0

Pourriez-vous ajouter quelques explications? Ou supprimez complètement cette question, car les autres réponses démontrent exactement ce que vous conseillez avec des exemples de code et des explications. –

6

, vous pouvez énumérer tous les TextBox contrôles sur le formulaire et effectuer une action spécifique sur eux (dans un bouton gestionnaire d'événements clic) A l'intérieur du code du formulaire:

this.Controls.OfType<TextBox>().ToList().ForEach(x => x.Clear()); 

Si vous devez seulement clair certains des contrôles TextBox, vous pouvez fournir une sorte de filtre comme ceci:

this.Controls.OfType<TextBox>() 
    // Add a condition to clear only some of the text boxes - i.e. those named "tbPart..." 
    .Where(x=>x.Name.StartsWith("tbPart")) 
    .ToList().ForEach(x => x.Clear()); 
+0

Exactement ce que j'allais suggérer. Je suppose que les gens nommés Michael se ressemblent. –

+0

Ceci est parfait, je dois essentiellement effacer chaque zone de texte sur le formulaire, donc cela semble être la meilleure façon de le faire. Merci beaucoup. Je vais essayer et revenir avec des résultats. – Nezz

+0

Le code ci-dessus ne semble pas faire quoi que ce soit, aucune erreur ne s'affiche cependant. Mes zones de texte sont dans une zone de groupe, si cela fait une différence? – Nezz

0
foreach(Control ctrl in this.Controls) 
{ 
    if(ctrl.GetType() == typeof(TextBox)) 
    { 
     ctrl.Text = String.Empty; 
    } 
}