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

Duke49 553 Messages postés jeudi 12 octobre 2006Date d'inscription 6 juin 2015 Dernière intervention - 28 févr. 2011 à 13:19 - Dernière réponse : cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention
- 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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 28 févr. 2011 à 14:14
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

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_casy
Meilleure réponse
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 28 févr. 2011 à 14:15
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

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de NHenry
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 28 févr. 2011 à 14:36
0
Merci
Je ne savais pas cela, merci Casy pour l'information.

Mon site
Commenter la réponse de NHenry
Duke49 553 Messages postés jeudi 12 octobre 2006Date d'inscription 6 juin 2015 Dernière intervention - 28 févr. 2011 à 14:55
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 28 févr. 2011 à 15:11
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
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 28 févr. 2011 à 16:17
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.