VB.NET - Controler l'existant d'un type d'objet depuis le ControlCollection ? [Résolu]

Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Dernière intervention
6 juin 2015
- - Dernière réponse : cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
- 28 févr. 2011 à 16:17
Bonjourno ^^

J'aimerai contrôler l'existence d'un type d'objet dans ma liste de contrôles avant de commencer l'énumération avec Each.

Comment faire ?
(voir commentaire, code ci-dessous)
    Private Sub GroupBoxLabelFont()
        Dim curCTR As ControlCollection = Me.Controls
        If curCTR.Count = 0 Then Exit Sub
        Dim curGB As GroupBox
        Dim curLAB As Object
        'Si dans la liste curCTR il n'existe pas de type
        'groupebox alors Exit Sub ????
        For Each curGB In curCTR
           'Si dans la liste curGB il n'existe pas de type
           'label alors Exit For ????
            For Each curLAB In curGB.Controls
                If curLAB.GetType = GetType(Label) Then
                    curLAB.ForeColor = Color.DarkRed
                End If
            Next
        Next
    End Sub
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
3
Merci
Petit exemple en utilisant Linq

Private Sub GroupBoxLabelFont()
  Dim curGBs as IEnumerable = From c In Me.Controls
                              Where c.GetType.Tostring = GetType(GroupBox).TString

  For Each curGB As GroupBox in curGBs
    Dim curLBLs as IEnumerable= From c In curGB.Controls
                                Where c.GetType.Tostring = GetType(Label).TString
    For Each curLBL As Label in curLBLs
      curLBL.ForeColor = Color.DarkRed
    Next
  Next
End Sub



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
14358
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
22 janvier 2019
366
3
Merci
Bonjour,

Désolé, je ne pense pas que ça soit possible.

Sinon :
If curLAB.GetType = GetType(Label) Then
peut être mieux en :
If TypeOf curLAB Is Label Then
Il me semble.

Mon site

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
14358
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
22 janvier 2019
366
0
Merci
Je ne savais pas cela, merci Casy pour l'information.

Mon site
Commenter la réponse de NHenry
Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Dernière intervention
6 juin 2015
3
0
Merci
Merci Henry; c'est carrément mieux !!!
(encore mon coté "Alzheimer vb6" à améliorer ^^)

Extra Casy ^^
Le trésor de VB-BABA et des 40 codeurs ^^
C'est surréaliste le Linq !!! Wahhh :)

ça évite le plantage de type si il n'en existe pas.
Si le type est absent, le debugger reprend comme par magie la suite de l'énumération qui semble positionné en mémoire en tâche de fond.

Sa ressemble à une requête SQL sauf qu'elle s'applique au code !!!
Même si je ne sais pas comment il fait pour passer cette exception de type, cette méthode "LINQ" viens de me créer un filet de bave d'émerveillement.

Merci à vous !!!!!
Commenter la réponse de Duke49
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
0
Merci
Linq est un acronyme de "Language Integrated Query"

C'est, comme son nom l'indique, un langage de requetage intégré (d'ou la ressemblance avec SQL) qui a été introduit avec VS2008.
Initialement décliné en 3 catégories, Linq To Object (code que j'ai donné), Linq To Xml (anciennement XLINQ), Linq to SQL (anciennement DLINQ), de nombreux providers, ont, depuis été créés. Une liste, probablement pas exhaustive existe ici

Je suis, moi-même, à peine à la découverte.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
51
0
Merci
Salut
On apprend des choses
un lien
http://www.dreamincode.net/forums/topic/62023-using-linq/
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.