IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Accés direct à TOUS les controls d'une form


Sujet :

Windows Forms

  1. #1
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut Accés direct à TOUS les controls d'une form
    Bonjour.

    Est-il possible d'accéder directement à tous les controls d'un form par code ?

    Si on met un TabControl avec des Tabpages dans une form, il faut apparemment descendre dans le TabControl puis dans les TabPage pour avoir accés par code aux controls de ce TabPage !!!

    Exemple :
    Dans ma Form "Tutu" j'ai un TabControl "Toto" avec une TabPage "Tata" qui contient un textbox "textboxTiti".

    Le TextBox "textboxTiti" n'est pas un item des controls de ma Form "Tutu".
    Si je fais For each ctl in Form("Tutu") je n'accède qu'au TabControl "Toto".

    Evidemment, ça se contourne facilement à grand coup de récursivité mais c'est un peu lourd d'autant plus que dans le code on peut directement faire me.textboxTiti !!!

    La question est donc : existe-il un moyen d'accéder à tous les controls d'une form même ceux contenu dans un container de cette form ?
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Public Function FindControl(ByVal ControlDépart As Control, ByVal Nom As String) As Control
            Dim Ctrl As Control = Me.GetNextControl(ControlDépart, True)
            While Ctrl IsNot Nothing
                If Ctrl.Name = Nom Then
                    Return Ctrl
                End If
                Ctrl = Me.GetNextControl(Ctrl, True)
            End While
            Return Nothing
        End Function
    Pour l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Dim item As Control = FindControl(Me, "TextBox1")

  3. #3
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Ca roule.

    Merci beaucoup Bob.
    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    Je viens d'essayer ce bout de code, mais VS 2005 ne trouve pas la fonction GetNextControl ?
    S'agirait-il d'une fonction disponible dans une librairie que je n'ai pas importée ou d'une fonction à développer.

    Pour info, je suis en CompactFramework 2.0 (je bosse sur PocketPC)

    Merci d'avance,
    Ch'Portos.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    Il semblerait que la fonction GetNextControl ne soit pas implémentée pour cette version du FrameWork.

    Il vous faut donc réaliser vous même une fonction récursive. Je n'ai aucune expérience en Pocket PC .

  6. #6
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Pour la méthode sauvage sans le getnextcontrols j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        Private Sub loadContainerFields(ByRef IContainer As Control)
     
            Dim cControl As System.Windows.Forms.Control
     
            For Each cControl In IContainer.controls
     
                InitializeField(cControl)
     
                If cControl.HasChildren Then
                    'appel réentrant car le Control contient des controls
                    loadContainerFields(cControl)
                End If
            Next
     
        End Sub
     
        Private Sub InitializeField(ByVal IControl As Object)
     
        '.... code qui initialise le control ...
     
        End Sub
    En premier appel je lui passe ma form (puisque form hérite de control).
    A noter que le "As Object" dans InitializeField est volontaire car je joue dans mon code sur des propriétés spécifiques à certain types de controls (pas très propre tout ça je vous l'accorde ! ;-))

    cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [code] Comment lister tous les éléments d'une form
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/10/2006, 11h23
  2. Réponses: 2
    Dernier message: 06/06/2006, 08h32
  3. [C#]Enumer les control d'une form ??
    Par djoao dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/03/2006, 12h28
  4. Envoie d'un message a TOUS les composant d'une form
    Par chddv dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/09/2003, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo