Je suis en train de traduire mon application VB.Net et j'ai besoin de parcourir tous les contrôles de mon formulaire. En utilisant une fonction récursive telle queVB.Net: Boucler tous les éléments de formulaire, y compris CommonDialogs
Public Sub TranslateControl(ByVal Ctrl As Control)
For Each ChildCtrl As Control In Ctrl.Controls
ChildCtrl.Text = Translate(ChildCtrl.Text)
If TypeOf ChildCtrl Is Label Then
CType(ChildCtrl, Label).Tag = Translate(CType(ChildCtrl, Label).Tag)
End If
TranslateControl(ChildCtrl)
Next
End Sub
fonctionne très bien, mais il ne comprend pas les objets CommonDialog
, tels que FolderBrowser
objets. Comment puis-je accéder à ces objets? J'ai essayé
For Each ChildDialog As CommonDialog In Ctrl.Controls
ChildDialog.Tag = Translate(ChildDialog.Tag)
Next
Mais il y a évidemment un problème d'héritage, car les objets ne sont pas CommonDialog
controls
.
Y a-t-il un moyen pour moi de boucler vraiment tous les éléments affichés sur mon formulaire?
Merci beaucoup!
CFP
Merci pour votre réponse! Cependant, je dois avoir mal formulé ma question. Ce que je voulais dire était: J'ai déjà un moyen d'énumérer les contrôles sur mon formulaire. Toutefois, cette méthode énumère uniquement les contrôles et pas tous les éléments. Je suis à la recherche d'une méthode pour également énumérer d'autres éléments qui apparaissent sur mon formulaire, comme 'FolderBrowserDialog', aussi. Par exemple, supposons que j'ai un formulaire avec une étiquette et un bouton Parcourir qui affiche un objet FolderBrowserDialog. Je voudrais pouvoir lister tous les éléments qui sont sur le formulaire, y compris le FolderBrowser. Merci! –
Sans blague. Vous pouvez itérer certains des composants du formulaire en itérant Me.components.Components. Cela ne donne pas les objets de dialogue, ils ne sont pas ajoutés à la collection. Seule la réflexion va les déterrer hors de l'objet de forme. –
Hmmmm. OK merci! –