Claire de plusieurs zones de texte avec un bouton en C#
Que j'utilise .NET framework 4.
Dans mon formulaire, j'ai 41 zones de texte.
J'ai essayé avec ce code:
private void ClearTextBoxes()
{
Action<Control.ControlCollection> func = null;
func = (controls) =>
{
foreach (Control control in controls)
if (control is TextBox)
(control as TextBox).Clear();
else
func(control.Controls);
};
func(Controls);
}
Et ce code:
private void ClearTextBoxes(Control.ControlCollection cc)
{
foreach (Control ctrl in cc)
{
TextBox tb = ctrl as TextBox;
if (tb != null)
tb.Text = String.Empty;
else
ClearTextBoxes(ctrl.Controls);
}
}
Cela ne fonctionne toujours pas pour moi.
Quand j'ai essayé d'effacer avec ce code TextBoxName.Text = String.Empty;
la zone de texte succès compensés, mais d'une zone de texte, avait encore 40 zone de texte nouveau.
Comment puis-je résoudre ce problème?
MODIFIER
J'ai mis dans cette:
private void btnClear_Click(object sender, EventArgs e)
{
ClearAllText(this);
}
void ClearAllText(Control con)
{
foreach (Control c in con.Controls)
{
if (c is TextBox)
((TextBox)c).Clear();
else
ClearAllText(c);
}
}
mais toujours pas de travail.
Modifier
J'ai utilisé des panneaux et splitter.
formulaire web ou de gagner de forme?
dans Win form @MicrosoftDN
Existe-il des zones de texte sur des panneaux ou autres récipients?
Oui, j'ai panneau et spliter
dans Win form @MicrosoftDN
Existe-il des zones de texte sur des panneaux ou autres récipients?
Oui, j'ai panneau et spliter
OriginalL'auteur Abox LsrKdz | 2013-11-19
Vous devez vous connecter pour publier un commentaire.
D'utiliser le code ci-dessus, il suffit de faire ceci:
je pense que ça fonctionne bien , les OP doivent énoncer clairement le problème, où il est coincé.
Peut-on avoir une capture d'écran, vous gagnez le formulaire de demande? aussi, ajouter un point d'arrêt dans la boucle foreach, faut-il aller à l'intérieur de la boucle?
j'ai mis le nom du panneau au lieu de
this
. et cela fonctionne maintenant.... le nom du groupe estpnlData
C'est la seule que l'travaillé après avoir tester plusieurs version. Merci beaucoup pour sauver ma journée.
OriginalL'auteur User2012384
Avez-vous essayé
ctrl
n'a pas tous les contrôles enfants? Pour quelque chose d'un peu plus de bonne, regardez F. R. I. E. N. D. S. réponse.OriginalL'auteur Rohit
Etape 1: Vous avez besoin pour passer à travers toutes les
Controls
dans leForm
.Etape 2: si un
Control
estTextBox
alors appelClear()
fonction.Essayez Ceci:
quelle est l'erreur?
Je pense que vous avez besoin de récursivité, ce sera juste effacer les zones de texte dans le contrôle de la collecte, de ne pas les zones de texte qui sont des enfants qui sont aux commandes de la collection.
oui nous avons besoin de récursion. Je vous remercie pour votre précieux point.
Vérifier mon édité Réponse.
OriginalL'auteur Sudhakar Tillapudi
Cela fonctionne assez bien pour moi.
Et puis il suffit d'appeler sur elle comme vous le souhaitez, par exemple, je suis à nettoyer toutes les zones de texte dans un TabControl, qui comprend également les Onglets pas sur l'écran:
OriginalL'auteur Scowen