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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

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