none
Disposition de contrôles sur un même formulaire RRS feed

  • Question

  • Bonjour,

    je veux disposer des contrôles (boutons, textboxs, labels, etc.) qui s'affichent et disparaissent dans un même formulaire, suivant les actions menées par l'utilisateur (clic sur bouton, sélection menu strip). En gros, j'ai 4 "jeux" de contrôles différents pour un même formulaire et j'ai du mal à les "travailler" (les placer, les dimensionner) parce qu'ils se superposent à l'écran. Vous n'aurez pas une astuce ?

    Je ne parle pas de les rendre visible/invisible, ça je maîtrise.

    Merci.

    Sébastien

    dimanche 5 janvier 2014 21:00

Réponses

  • Bonjour,

    Le plus simple est mettre vos "jeux" de contrôles dans des UserControl. Ensuite voilà un exemple de code à utiliser pour changer de UserControl lors du clic sur un bouton.

    public partial class Form1 : Form
    {
        private UserControl userControlCourant;
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            // Supprimer le UserControl courant de la fenêtre si existant
            if (this.userControlCourant != null)
            {
                this.Controls.Remove(this.userControlCourant);
            }
    
            // Créer le nouveau UserControl (ici vous devez appliquer vos conditions pour créer
            // le bon UserControl).
            this.userControlCourant = new MyUserControl();
    
            // Positionner le UserControl
            this.userControlCourant.Left = 16;
            this.userControlCourant.Top = 64;
                
            // Dimensionner le UserControl
            this.userControlCourant.Width = 100;
            this.userControlCourant.Height = 200;
    
            // Ajouter le UserControl dans la fenêtre
            this.Controls.Add(this.userControlCourant);
        }
    }

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    • Marqué comme réponse Aurel Bera jeudi 9 janvier 2014 08:32
    lundi 6 janvier 2014 02:47
    Modérateur
  • Merci beaucoup pour cette réponse.

    J'avais mis mes contrôles dans différents TableLayoutPanel que je faisais apparaître suivant les événements. C'est moins bien que la méthode que vous me proposez ?

    Après mon problème est aussi la conception graphique, j'ai du mal à voir ce que je fais en "empilant" les contrôles dans un même formulaire.

    Encore merci et bonne journée.

    Sébastien

    • Marqué comme réponse Aurel Bera jeudi 9 janvier 2014 08:32
    lundi 6 janvier 2014 07:54

Toutes les réponses

  • Bonjour,

    Le plus simple est mettre vos "jeux" de contrôles dans des UserControl. Ensuite voilà un exemple de code à utiliser pour changer de UserControl lors du clic sur un bouton.

    public partial class Form1 : Form
    {
        private UserControl userControlCourant;
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            // Supprimer le UserControl courant de la fenêtre si existant
            if (this.userControlCourant != null)
            {
                this.Controls.Remove(this.userControlCourant);
            }
    
            // Créer le nouveau UserControl (ici vous devez appliquer vos conditions pour créer
            // le bon UserControl).
            this.userControlCourant = new MyUserControl();
    
            // Positionner le UserControl
            this.userControlCourant.Left = 16;
            this.userControlCourant.Top = 64;
                
            // Dimensionner le UserControl
            this.userControlCourant.Width = 100;
            this.userControlCourant.Height = 200;
    
            // Ajouter le UserControl dans la fenêtre
            this.Controls.Add(this.userControlCourant);
        }
    }

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    • Marqué comme réponse Aurel Bera jeudi 9 janvier 2014 08:32
    lundi 6 janvier 2014 02:47
    Modérateur
  • Merci beaucoup pour cette réponse.

    J'avais mis mes contrôles dans différents TableLayoutPanel que je faisais apparaître suivant les événements. C'est moins bien que la méthode que vous me proposez ?

    Après mon problème est aussi la conception graphique, j'ai du mal à voir ce que je fais en "empilant" les contrôles dans un même formulaire.

    Encore merci et bonne journée.

    Sébastien

    • Marqué comme réponse Aurel Bera jeudi 9 janvier 2014 08:32
    lundi 6 janvier 2014 07:54
  • Bonjour

    Ca dépend sur ce que vous voulez faire.

    Si vous voulez utiliser les mêmes contrôles dans une autre section de votre appli ou une autre appli, c'était mieux de faire un UserControl. Sinon, il n'y a pas une grande différence.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 7 janvier 2014 07:29