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 :

controle non affiché dans un formulaire


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 143
    Points : 74
    Points
    74
    Par défaut controle non affiché dans un formulaire
    salut
    J'ai un problème avec ds contrôles que je cherche à ajouter à un formulaire par le code.

    Les controls, je voudrais les ajouter à un autre qui se trouve dans un groupbox, lui même situé dans un panel. j'ai écris le code ci-dessous qui est une procédure appelée par l'évènement CLICK d'un bouton, mais je n'ai toujours rien:

    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
    23
    24
    25
     
     
    Public Sub affichParametrAnt()
            Dim i As Integer
            Dim pt, pt1 As Point
            If ANT > 1 Then
                pt = FormOuverture.LblAntenne.Location
                ReDim paraAnt(ANT - 2)
                For i = 0 To paraAnt.Length - 1
                    With paraAnt(i)
                        .initParam()
                        pt1.Y = pt.Y + 100
                        pt1.X = pt.X
                        .lblAntenne.Location = pt1
                        .lblAntenne.Text = "Antenne " & i + 2
                        FormOuverture.GrpBxAntennes.Controls.Add(.lblAntenne)
                        FormOuverture.PanelAntennes.Controls.Add(FormOuverture.GrpBxAntennes)
                        FormOuverture.Controls.Add(.lblAntenne)
                        .lblAntenne.Show()
     
                    End With
     
                Next
            End If
        End Sub

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    on croirait du code vb6 tellement c'est affreux (with, le tableau et son redim)
    d'ailleurs t'as pas mis le preserve après le redim, ce qui veut dire que tout le contenu est effacé ... tu as pas d'erreur ? (ou alors c'est une structure, et on retourne vraiment à l'époque de vb6 ...)

    es-tu passé en pas à pas voir ce qui se passait ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Je voudrais pas dire de betises, mais il me semble que dans une procedure with/endwith, il ne prends en compte que le parametrage de l'objet en question et pas les lignes de commandes autres ...
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  4. #4
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    on croirait du code vb6 tellement c'est affreux (with, le tableau et son redim)
    d'ailleurs t'as pas mis le preserve après le redim, ce qui veut dire que tout le contenu est effacé ... tu as pas d'erreur ? (ou alors c'est une structure, et on retourne vraiment à l'époque de vb6 ...)

    es-tu passé en pas à pas voir ce qui se passait ?
    J'ai fais l'exécution pas à pas, il n'ya aucun problème, si ce n'est que les controls de mon tableau de structure (oui, c'est bien une structure) ne s'affichent pas.
    Y'a d'autres manières de corriger les gens que d'employer cette méthode que tu chéris tant. C'est normal de ramper quand on apprend à marcher!!

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par Danyel Voir le message
    Je voudrais pas dire de betises, mais il me semble que dans une procedure with/endwith, il ne prends en compte que le parametrage de l'objet en question et pas les lignes de commandes autres ...
    c'est une betise en effet ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par SandyF Voir le message
    J'ai fais l'exécution pas à pas, il n'ya aucun problème, si ce n'est que les controls de mon tableau de structure (oui, c'est bien une structure) ne s'affichent pas.
    Y'a d'autres manières de corriger les gens que d'employer cette méthode que tu chéris tant. C'est normal de ramper quand on apprend à marcher!!

    faut pas s'arreter à la forme, mais regarder le fond, et puis j'ai juste commenté le code, pas celui qui l'a écrit
    je te rassure moi aussi j'ai écris des trucs affreux au début


    faudrait nous passer tout le code pour qu'on comprenne mieux

    déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FormOuverture.GrpBxAntennes.Controls.Add(.lblAntenne)
    FormOuverture.Controls.Add(.lblAntenne)
    ca ne peut pas fonctionner, un controle ne peut etre qu'à un endroit à la fois, donc c'est censé planter ...

    et puis comme je disais redim vide le tableau
    donc ReDim paraAnt(ANT - 2) fait que paraAnt doit etre vide (tout étant dimensionné) donc le .initParam devrait planter aussi selon moi
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    La structure utilisée contient des controles que je voudrais afficher en fonction d'un paramètre entré par l'utilisateur, c'est pourquoi j'utilise un tableau. en pas à pas détaillé, il n'y a , me semble-t-il aucun problème. La modification des propriétés est bien prise en compte, seulement l'affichage pose problème. Je pensais résoudre ce problème en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    FormOuverture.GrpBxAntennes.Controls.Add(.lblAntenne)
                        FormOuverture.PanelAntennes.Controls.Add(FormOuverture.GrpBxAntennes)
                        FormOuverture.Controls.Add(.lblAntenne)
    mais, rien n'y fait.

    J'ai eu le même problème mais cette fois avec un formulaire. Je l'ai dessiné en mode design, je modifie l'un de ses picturebox dans un procédure, puis je cherche à l'afficher, mais rien.

    J'aimerais bien que quelqu'un m'aide à comprendre le petit truc que j'omets à chaque fois. j'en serais extrêmement soulagée

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pour qu'on puisse trouver ce qui ne va pas il nous faut le détail de chaque chose utilisé dans la sub que tu nous montre

    donc le code la structure, ou tu instancies FormOuverture etc ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    Mon code est assez long. Donc je vous montrerais juste quelque parties.
    Voici le code de la structure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     Public Structure modParamAnt
            Dim lblAntenne, lblAbs, lblOrd As Label
            Dim txtAbs, txtOrd As TextBox
            Public Sub initParam()
                lblAntenne = New Label
                lblAbs = New Label
                lblOrd = New Label
                txtAbs = New TextBox
                txtOrd = New TextBox
            End Sub
        End Structure
    Là, c'est le code de la procédure qui devrait afficher de nouveaux controls dans le formulaire FormOuverture.

    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
    23
    24
    25
    26
    27
     
     
     Public Sub affichParametrAnt()
            Dim i As Integer
            Dim pt, pt1 As Point
            If ANT > 1 Then
                Dim f As New FormOuverture
     
                pt = f.LblAntenne.Location
                ReDim paraAnt(ANT - 2)
                For i = 0 To paraAnt.Length - 1
                    With paraAnt(i)
                        .initParam()
                        pt1.X = pt.X
                        .lblAntenne.Location = pt1
                        .lblAntenne.Text = "Antenne " & i + 2
                        FormOuverture.GrpBxAntennes.Controls.Add(.lblAntenne)
                        FormOuverture.PanelAntennes.Controls.Add(FormOuverture.GrpBxAntennes)
                        FormOuverture.Controls.Add(.lblAntenne)
                        FormOuverture.PanelAntennes.Visible = True
                        .lblAntenne.Show()
     
                    End With
     
                Next
            End If
        End Sub

    Cette procédure est appelée par l'évènement click d'un button du formulaire FormOuverture.

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je continue de dire que ce code ne peut pas marcher à cause des controls.Add


    sinon je pense qu'ils sont affichés mais pas à l'endroit que tu le souhaites

    sur ta fenetre tu ne vois rien du tout où il manque juste quelques controles ?

    tu ne définies que les propriétés de lblAntenne, c'est normal que tu ne gère pas les autres labels et les textbox ?

    un usercontrol aurait surement aussi été plus simple ...


    en pas à pas ca donne quoi ?

    tu peux aussi regarder à l'execution ce que contient formouverture.controls, ainsi que les coordonnées location et size de chacun
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    je continue de dire que ce code ne peut pas marcher à cause des controls.Add

    Est-ce à dire que je devrais les enlever?
    Pour les autres label et textbox, je préfère m'assurer que ça marche pour un control avant d'écrire le code pour les autres.

    Comme je le disais au départ, en exécution pas à pas , les modifications sur les propriétés du label sont bien enregistrées.Cependant, ils sont pas dans FormOuverture.grpbxAntennes.controls.(la propriété count reste inchangée)

    J'ai ce message lorsque j'essaie de voir les controls de mon gropuebox.Item = Pour évaluer une propriété indexée, cette dernière doit être qualifiée et l'utilisateur doit fournir les arguments de manière explicite.

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si si il faut bien des controls.Add, sinon tu auras rien à l'écran

    mais le lbl tu veux le mettre dans 2 control (dans le groupbox, puis dans la form directement) ce qui n'est pas possible

    je viens de tester, et j'ai dit à moitié des conneries
    en fait ca ne génère pas d'erreur, par contre c'est le dernier controls.Add qui a raison


    donc le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FormOuverture.GrpBxAntennes.Controls.Add(.lblAntenne) '  le label est mis dans un groupbox
    FormOuverture.PanelAntennes.Controls.Add(FormOuverture.GrpBxAntennes) ' le groupbox est mis dans un panel
    FormOuverture.Controls.Add(.lblAntenne) ' le label est mis dans la form (donc il est retiré du groupbox)
    au final je pense avoir trouvé ce qui t'arrives, le label est derrière le groupbox, c'est pour ca que tu le vois pas ^^ (on aura mit le temps pour trouver !)

    pour connaitre l'état des controls en debug, tu peux voir la collection dans .controls (tu verras par exemple que count vaut 3)
    et après il faut écrire controls(0) pour voir le 0 qui c'est
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    En effet, le control était derrière le groupebox.
    J'ai rectifié le tir et là çà marche.
    Merci

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

Discussions similaires

  1. Valeur du recordset non affichée dans formulaire
    Par diombo dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/10/2013, 15h59
  2. [AC-2007] Champ non affiché dans un sous formulaire
    Par wanaga dans le forum IHM
    Réponses: 20
    Dernier message: 27/04/2012, 13h50
  3. Valeur non affichée dans un formulaire
    Par nicolasferraris dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/04/2009, 08h55
  4. Réponses: 4
    Dernier message: 27/10/2007, 21h11
  5. Problème de caractères non latin dans un formulaire
    Par Huntress dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2006, 13h34

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