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

VB.NET Discussion :

TableLayoutPanel: Contrôles fantômes?


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut TableLayoutPanel: Contrôles fantômes?
    Bonjour,
    Je fais face à un problème bizarre:
    J'ai une form où il y a un contrôle TableLayoutPanel (TLP)

    J'ajoute 2 Panels par programmation avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim P1 As New Panel With {.BackColor = Color.Yellow, .Text = "Bonjour", .Dock = DockStyle.Fill}
    TLP.Controls.Add(P1)
    Dim P2 As New Panel With {.BackColor = Color.Red, .Text = "Hello", .Dock = DockStyle.Fill}
    TLP.Controls.Add(P2)
    Cela s'affiche comme attendu.

    Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Pnl as Panel=TLP.Controls(0)
    Dim iPos As TableLayoutPanelCellPosition = TLP.GetCellPosition(Pnl)
    J'obtiens [-1,-1] pour iPos au lieu de [0,0] (bien que, en mode Debug, Pnl.Text retourne bien "Bonjour")

    Il y a un truc sûrement mais je ne vois pas

    Merci pour l'aide

    Olivier

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    N'est-il pas nécessaire d'ajouter le TLP à la collection des contrôles du Form, avec une instruction ressemblant ± à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.Controls.Add(TLP)
    J'espère te donner une bonne piste ...

  3. #3
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Il faut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TLP.getpositionfromcontrol(Pnl)
    NB : La fonction (GetCellPosition) que tu utilises corresponds à ceci :
    https://docs.microsoft.com/fr-fr/dot...ew=netcore-3.1

    Bon codage ++

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour
    Etant donné que la propriete "attachée" Cell d'un control ajoutée au TableLayoutPanel doit être affectée d'abord avant d’être lue ,elle contient par défaut la valeur (-1,-1).
    C'est en effet une prop "attachée" definie par un composant provider sur le TableLayoutPanel analogue au ToolTip.
    il existe par ailleurs une surcharge spéciale pour le method TableLayoutPanel.Controls.Add(thecontrol,col,row).
    Exemple code .vb:
    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
    28
    29
     
     
    Public Class Form1
        Private pnl1, pnl2, pnl3 As Panel
        Private iPos As TableLayoutPanelCellPosition
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Me.TLP.ColumnCount = 3
            Me.TLP.RowCount = 3
     
            pnl1 = New Panel : pnl1.BackColor = Color.Red
            pnl2 = New Panel : pnl2.BackColor = Color.Yellow
            pnl3 = New Panel : pnl3.BackColor = Color.Magenta
            Me.TLP.Controls.Add(pnl1, 0, 0)
            Me.TLP.Controls.Add(pnl2, 1, 0)
            Me.TLP.Controls.Add(pnl3, 1, 1)
     
        End Sub
     
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            iPos = Me.TLP.GetCellPosition(pnl1)
            Label1.Text = iPos.ToString
            iPos = Me.TLP.GetCellPosition(pnl2)
            Label2.Text = iPos.ToString
            iPos = Me.TLP.GetCellPosition(pnl3)
            Label3.Text = iPos.ToString
        End Sub
     
     
    End Class
    bon code...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Wallace1: Super! merci. (Franchement GetCellPosition ça prête à confusion non?..)
    MABROUKI: Merci pour ton explication. (je ne vois cependant pas pourquoi cette valeur par défaut [-1,-1] alors qu'il est dans une cellule...mais bon c'est comme ça )

  6. #6
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    De toute évidence, j'avais pas capté la portée de la question ...
    Tâcherai de faire mieux une autre fois !

  7. #7
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    Citation Envoyé par zitoune92 Voir le message
    Wallace1: Super! merci. (Franchement GetCellPosition ça prête à confusion non?..)
    MABROUKI: Merci pour ton explication. (je ne vois cependant pas pourquoi cette valeur par défaut [-1,-1] alors qu'il est dans une cellule...mais bon c'est comme ça )
    Wallace1 : ca fonctionne à la manière des props attachées de Wpf :Canvas.GetTop(elemui, y) et Canvas.GetLeft(elemui,x).

    la réponse est probablement ici :
    extrait de la MSDN Lib :
    Le fait d'affecter la valeur -1 aux propriétés Column et Row d'un contrôle enfant provoquera le déplacement du contrôle vers la première cellule vide du contrôle TableLayoutPanel. La cellule vide sera choisie lors d'une recherche qui s'effectuera de gauche à droite et de haut en bas. Cet ordre dépend de la culture ; il se comportera correctement dans les dispositions de droite à gauche.


    Comme tes controls sont ajoutés à la queue "leu leu",il sont disposés dans la première cellule vide c.à.d à la 1 ère cellule vide et leur prop attachée Cell reçoit les coords (-1,-1).

    bon code...

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

Discussions similaires

  1. Contrôle Qualité sur nomenclature fantôme
    Par FDIISTOBAL dans le forum SAGE
    Réponses: 0
    Dernier message: 27/11/2014, 17h31
  2. [XL-2007] Contrôles fantômes dans Userforms !
    Par Archampi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/05/2013, 15h18
  3. TablelayoutPanel et remplacement de contrôles ?
    Par Gdal dans le forum VB.NET
    Réponses: 1
    Dernier message: 01/03/2007, 20h10
  4. [contrôle] dbDateTimePicker ???
    Par Fizgig dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/11/2002, 15h45
  5. [Kylix] Contrôle DBGrid
    Par KThrax dans le forum EDI
    Réponses: 1
    Dernier message: 10/05/2002, 14h18

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