2009-11-14 4 views

Répondre

1

Me.Controls.Clear supprimera tous les contrôles de la collection Controls. Vous devez parcourir tous les contrôles dans Controls et si le contrôle est de type RichTextBox, appelez une méthode clear sur ce contrôle.

0

Je pense que vous pouvez utiliser LINQ pour sélectionner toutes les zones de texte ... quelque chose comme ça (non testé et avec C# syntaxe)

IEnumerable<RichTextBox> txtBoxes = from txt in form1.Controls 
           where txt is RichTextBox 
           select (RichTextBox) txt; 

alors vous pouvez faire une compensation boucle foreach il.

foreach(RichTextBoxt in txtBoxes) 
{ 
    // t.clear() ... clear(t) ... t.Text=String.empty ... o whatever you want 
} 
+1

Je pense que cela ignore toutes les zones richtext qui se trouvent dans un conteneur sur le formulaire, plutôt que dans la racine du formulaire. – MarkJ

1

Vous pouvez le faire de cette façon. Il efface toutes les zones de texte sur le formulaire. Si vous souhaitez enregistrer des zones richtext, vous pouvez vérifier ctl.name.

Dim ctl As Control 
Dim rt As RichTextBox 

For Each ctl In Me.Controls 
    If TypeOf (ctl) Is RichTextBox Then 
    rt = ctl 
    rt.Clear() 
    End If 
Next ctl 
0

Apparemment, toute approche from ctrl in form.Controls... Ignore tous les (riches) qui vivent dans des zones de texte d'un panneau/autre récipient. C'est aussi ce que MarkJ a dit en réponse à la réponse de Jonathan.

Voici une routine à recopier explicitement sur tous les contrôles et effacer tout contrôle qui (1) n'a pas d'enfants, et (2) est une zone de texte (riche).

Private Sub ClearControl(ByVal ctrl As Control) 

    If ctrl.Controls.Count > 0 Then 
     For Each subCtrl As Control In ctrl.Controls 
      ClearControl(subCtrl) 
     Next 
    End If 

    If TypeOf ctrl Is RichTextBox Then 
     DirectCast(ctrl, RichTextBox).Clear() 
    End If 

    REM You can clear other types of controls in here as well 
    If TypeOf ctrl Is TextBox Then 
     DirectCast(ctrl, TextBox).Clear() 
    End If 

End Sub 

passer le formulaire en tant que la commande de racine pour démarrer la récursion pour effacer tous les sous-contrôles souhaités: ClearControl(Me).

Questions connexes