VB.NET - Controler l'existant d'un type d'objet depuis le ControlCollection ?

Résolu
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 28 févr. 2011 à 13:19
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 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

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 févr. 2011 à 14:14
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
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 févr. 2011 à 14:15
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
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
28 févr. 2011 à 14:36
Je ne savais pas cela, merci Casy pour l'information.

Mon site
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
28 févr. 2011 à 14:55
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 !!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 févr. 2011 à 15:11
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
28 févr. 2011 à 16:17
Salut
On apprend des choses
un lien
http://www.dreamincode.net/forums/topic/62023-using-linq/
0
Rejoignez-nous