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 :

Suppression Usercontrol dans Flowlayoutpanel


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut Suppression Usercontrol dans Flowlayoutpanel
    Bonjour à tous,
    Comme le précise le préfixe, je débute dans VB.net et j'aurais besoin d'une aide svp :
    J'ai un form1 avec un bouton qui permet d'ajouter autant de fois que je veux un Usercontrol dans un FlowLayoutPanel via ce code :

    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
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles ECS.Click
            Dim NomConteneur As String
     
            Dim NumPage As Integer
            NumPage = "" & TabControl1.SelectedIndex + 1
            NomConteneur = "Baie" & NumPage
     
            Dim g As UserControl = New APPMODELSOFT
            Dim tb As TabPage
     
     
            tb = Me.TabControl1.TabPages(TabControl1.SelectedIndex)
     
            For Each ctrl As Control In tb.Controls
                If TypeOf ctrl Is FlowLayoutPanel Then
                    ctrl.Controls.Add(g)
                    For Each gpe As Control In g.Controls
                        If TypeOf gpe Is GroupBox Then
                            gpe.Text = ECS.Text
                        End If
                    Next
                End If
            Next
        End Sub
    Puis j'ai fait un code dans mon Usercontrol qui permet à l'utilisateur de supprimer le Usercontrol de son choix en faisant un click droit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class APPMODELSOFT
        Private Sub GroupBox1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles GroupBox1.MouseUp
            If e.Button = Button.MouseButtons.Right Then
                Dim alerte = MsgBox("Voulez-vous supprimer cet élément?", MsgBoxStyle.Question + MsgBoxStyle.OkCancel)
                If alerte = vbOK Then
                    Me.Controls.Remove(GroupBox1)
                End If
            End If
     
        End Sub
    End Class
    Jusque là, tout va bien, l'élément sur lequel j'ai cliqué disparait...
    Le problème que j'ai, c'est que les Usercontrol qui se trouvent en dessous de l'élément supprimé ne remontent pas et que si je click à nouveau sur mon bouton pour ajouter un nouveau Usercontrol , ce dernier apparait tout en bas et ne comble pas le trou laissé.

    Si quelqu'un avait une idée, soit pour que tous mes Usercontrol situés en dessous du Usercontrol supprimé remontent et/ou que je puisse remplir l'espace vide lorsque j'ajoute un nouveau Usercontrol ...

    Je vous remercie par avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bonjour,

    Il faut que tu déclare un évenement sur ton usercontrol.
    Puis lorsque tu ajoute le usercontrol à son parent, tu l'abonne à cet événement, et provoque la suppression de l'appelant dans la méthode.

    J@ck.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Salut J@ck,

    oui, c'est un peu ce vers quoi je voulais aller mais je ne sais pas quel évènement créer.
    Je ne sais pas comment dire à mon FlowLayoutPanel de "redistribuer les cartes" en quelque sorte, à savoir replacer les différents Usercontrol sans qu'il y ait d'espace entre eux vu que j'en ai supprimer un ou faire en sorte de combler l'espace vide avec un autre Usercontrol

    Je mets une tite copie d'écran pour mieux comprendre...

    Merci d'avance à ceux qui pourraient m'aider
    Images attachées Images attachées  

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bonjour,

    Laisse tomber le FlowLayoutPanel... pas idéal ici.
    utilise juste un simple panel, tu ajoute tes usercontrols en faisant un Dock = Dock.Top au passage et pouf ! Seul inconvénient, les usercontrols seront ajoutés en première position au lieu de la dernière.

    J@ck.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Re J@ck,

    j'essaie avec un panel, le problème est que je n'arrive pas à ajouter mes usercontrol l'un en dessous de l'autre. Le Flowlayoutpanel fonctionnait bien pour ça...

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Donne nous ton code ou tu ajoute ton usercontrol.

    Après tu pourrais le faire avec le flowlayout panel, mais je pense pas qu'il soit adapté ici, le flowlayout est surtout là pour les cas ou tes usercontrols aurait des dimensions différentes. C'est peut être d'ailleurs la raison de cette espace entre tes 2 usercontrols ...

    PS : juste comme ca on est bien d'accord tu utilise des usercontrols ? parce que je viens de relire ton code dans le premier post et j'ai l'impression que ce n'est pas le cas.
    Un usercontrol se déclare ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class MonUserControl
        Inherits System.Windows.Forms.UserControl
    Si tu n'a pas ça dans ton code nous somme donc dans un quiproquo ...

    J@ck.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Re J@ck,

    Tout d'abord, je te remercie de te pencher sur mon problème
    Je tenvoie ce que j'ai commencé à faire mais surtout, surtout, ne hurle pas! Comme j'ai dit au début, je suis autodidacte et débute vraiment avec vb.net. J'essaie de combiner mes connaissance en vba (Excel) et des bout de code que je peux trouver par ci par là. Du coup, ne fais pas une crise cardiaque en regardant ce que j'ai fait :s

    Autre piste de recherche (pratique pour l'utilisateur) et peut être plus simple : un drag-drop de mes usercontrol dans mon flowlayoutpanel... je ne sais pas si c'est possible
    Fichiers attachés Fichiers attachés

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    lu en diagonale

    le flowlayoutpanel est bien le panel qu'il te faut
    si le bouton supprimer est dans le usercontrol, tu peux juste faire me.dispose
    ca détruit le controle, le flowlayoutpanel sera averti qu'un de ses enfants est remové et tout sera repositionné automatiquement

    avec un évènement ca marche aussi, et ca peut etre recommandé si le usercontrol doit en tenir compte pour autre chose que du layout
    le uc doit alors avoir un event, le lever sur le click du btn remove
    la fenetre (ou le uc) ayant le flowlayoutpanel s'abonne à cet évènement pour chaque instance créé et supprimera alors le usercontrol (.dispose est mieux que .controls.remove)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Salut Pol63,

    Super, le coup du .dispose fonctionne parfaitement!
    Je te remercie beaucoup

    Petite question subsidiaire... si ça ne te dérange pas
    Si, au lieu d'utiliser .dispose, j'utilise Me.controls.remove et que je veux remplir le "trou laisser" par un autre usercontrol, tu sais comment je pourrais faire?
    Je pensais à un truc genre trouver l'index du usercontrol (me.tabindex) et proposer à l'utilisateur de cliquer sur le bouton de son choix pour y intercaler le nouveau userform...
    Le problème c'est que je ne sais pas comment dire à mon programme qu'il doit mettre le nouveau userform en index 2 par exemple

Discussions similaires

  1. suppression enregistrement dans un formulaire
    Par oniric dans le forum Access
    Réponses: 3
    Dernier message: 13/04/2006, 11h51
  2. [C#] Usercontrol dans usercontrol -> pb compilation
    Par annalady dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/04/2006, 15h38
  3. [VB.NET]Afficher plusieurs UserControls dans un Panel
    Par Golzinne dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/02/2006, 21h29
  4. Suppression élément dans liste
    Par bugmenot dans le forum C
    Réponses: 12
    Dernier message: 06/12/2005, 19h52
  5. [VBA-E]Suppression liaisons dans excel
    Par olivier231 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2005, 10h37

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