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 :

[Winforms] User control et stack


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 33
    Points
    33
    Par défaut [Winforms] User control et stack
    Bonjour,

    pour un petit projet en c# j'ai crée un user control tout simple composé d'un split panel qui contient lui même un split panel qui contient lui même 2 labels.
    J'ai une window principale qui contient un menu en haut (toolstrip) et un panel en prends tout le reste de la place en dessous.

    Dans ce panel je voudrais ajouter mon user control mais j'aimerais:
    1. Qu'il prenne toute la largeur
    2. Que les user controls se "stack" les uns en dessous des autres qui a ce q'une scrollbar apparaisse.

    Actuellement quand j'ajoute plusieurs de mes user control ils se superposent.

    Quelqu'un aurait une idée, ou une expérience dans le même genre?

    Merci
    N'oubliez pas de consulter les FAQ ASP.NET/C#

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par leoz01 Voir le message
    1. Qu'il prenne toute la largeur
    Mets la propriété Dock à la valeur Fill

    Citation Envoyé par leoz01 Voir le message
    2. Que les user controls se "stack" les uns en dessous des autres qui a ce q'une scrollbar apparaisse.
    Mets les dans un FlowLayoutPanel

    Vu la 2e question, je corrige un peu ma réponse à la première : c'est plutôt le FlowLayoutPanel qui devrait avoir Dock = Fill

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 33
    Points
    33
    Par défaut
    Merci pour le FlowLayoutPanel cela a fonctionné pour le "stack" des user control.

    Bon par contre cela ne fonctionne pas pour qu'il prenne toute la largeur (j'ai mis Fill sur le layout) et quand je mets monUC.width=monForm.width une scrollbar horizontale pas très jolie apparaît (la verticale me convient par contre). Mais bon ce n'est pas bien grave.

    Merci encore
    N'oubliez pas de consulter les FAQ ASP.NET/C#

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par leoz01 Voir le message
    Bon par contre cela ne fonctionne pas pour qu'il prenne toute la largeur (j'ai mis Fill sur le layout) et quand je mets monUC.width=monForm.width une scrollbar horizontale pas très jolie apparaît (la verticale me convient par contre). Mais bon ce n'est pas bien grave.
    Et si tu mets aussi Dock = Fill sur le UC ?

  5. #5
    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 empiler une serie de usercontrol
    bonjour leoz01
    comme l'as dit tomlev tu peux utiliser un FlowLayoutPanel sur ton form .

    Tu peux garder aussi ton panel ,
    -garder un controle sur la hauteur de ton tonUserControl
    -lui demander de s'adapter à la largeur du Panel parent
    -demander meme au panel parent de scroller dans le cas ou l'utilisateur le place sur un Pane
    Mais il faut bien sur peaufiner un peu plus ton tonUserControl .
    voici le code du usercontrol qui s'empile au fur et à mesurer qu'on en ajoute des exemplaires dans un panel qui devient scrollable quand il le faut:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    //code du usercontrol
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WinStackingControls
    {
        public partial class myUserControl : UserControl
        {	
            //Declare a panel  object at class-level:
            private Panel myHostPanel; 
            public myUserControl()
            {
                InitializeComponent();
                //on garde un oeil sur la hauteur
    		    this.Height = 100;
    		    this.BackColor = Color.Red;
                //Ici le choix fatigue qui entraine l'empilement à la que-leuleu.
    		    this.Dock = DockStyle.Top;
    		    this.BorderStyle = BorderStyle.FixedSingle;
    		    this.Name = "MyUserControl";
     
            }
            // The ParentChanged event of the user control.
            //Verifie si le parent est un panel et le mets AutoScroll à true
     
            private void myUserControl_ParentChanged(object sender, EventArgs e)
            {
            if (this.Parent is Panel) 
                {
     
                myHostPanel = (Panel)this.Parent;		
    			myHostPanel.AutoScroll = true;
     
                }
     
            }
        }
    Tu genere d'abord ton projet pour voir le usercontrol dans la boite à outils.
    Pour l'utiliser eh bien,tu crees un form ,tu places un panel dessus et tu ajoutes ta serie de usercontrols qui s'empilent sagement de haut en bas.....
    bon code......................

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 33
    Points
    33
    Par défaut
    => tomlev
    Oui j'ai mis a Fill, etc...j'ai tout essayé mais bon ce n'est pas très grave l'essentiel fonctionne.

    => MABROUKI

    Merci de ton code il m'a été très instructif ^^
    N'oubliez pas de consulter les FAQ ASP.NET/C#

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

Discussions similaires

  1. Tutorial User Control et winform
    Par xian21 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/08/2010, 14h21
  2. [C#] User control
    Par Verboz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 27/04/2005, 22h46
  3. [C#] User Control dynamic
    Par Erakis dans le forum ASP.NET
    Réponses: 10
    Dernier message: 21/10/2004, 18h54
  4. [C#] DateTimePicker web user control
    Par titi29 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/06/2004, 18h38
  5. [VB.NET] Provoquer le rechargement d'un user control..
    Par didoboy dans le forum ASP.NET
    Réponses: 7
    Dernier message: 30/04/2004, 14h17

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