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

C# Discussion :

Changez tout le contenu d'une form


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut Changez tout le contenu d'une form
    Bonjour,

    J'ai une form avec deux boutons : bouton1 et bouton2.
    Lorsque je clique sur bouton1, je veux que le contenu de ma form (les deux boutons) disparaisse, et qu'à la place un label avec un message apparaisse.
    Si je clique sur bouton2, tout s'efface aussi et un label avec un message différent s'affiche.

    J'ai essayé plusieurs choses, notamment en surchargeant mon InitializeComponent, pour qu'il affiche le label selon le paramètre passé lors de la création de ma form, mais là je bloque complètement, et je ne vois pas comment faire ce que je veux.

    Le problème, c'est que quand je lance l'appli, une nouvelle form se crée, or, je voudrais que tout cela se passe dans la même form.

    Je vous donne mon 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
    25
    26
    27
    // Form1.cs
        public partial class Form1 : Form
        {
            private System.Windows.Forms.Form fen;
     
            public Form1()
            {
                InitializeComponent();
            }
     
            public Form1(int param)
            {
                InitializeComponent(param);
            }
     
            private void bouton1_Click(object sender, EventArgs e)
            {
                fen = new Form1(1);
                fen.ShowDialog();
            }
     
            private void bouton2_Click(object sender, EventArgs e)
            {
                fen = new Form1(2);
                fen.ShowDialog();
            }
        }
    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
    // Form1.Designer.cs
    // Code à la suite de InitializeComponent
    private System.Windows.Forms.Label label1;
     
            private void InitializeComponent(int param)
            {
                switch(param)
                {
                    case 1:
                        this.label1 = new System.Windows.Forms.Label();
                        this.SuspendLayout();
                        this.label1.Text = "Bonjour";
                        break;
                    case 2:
                        this.label1 = new System.Windows.Forms.Label();
                        this.SuspendLayout();
                        this.label1.Text = "Salut";
                        break;
                }            
            }
    Merci d'avance.

  2. #2
    Membre très actif Avatar de oussi
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 192
    Par défaut
    Salut,
    C'est assez simple, il faut que tu utilise la propriètè Visible de chaque controle et en la mettant à True ou False selon le cas. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void bouton1_Click(object sender, EventArgs e)
    {
            this.bouton1.Visible = False;
            this.bouton2.Visible = False;
            this.label1.Text = "hello,clic sur bouton1";
    }
     
    private void bouton1_Click(object sender, EventArgs e)
    {
            this.bouton1.Visible = False;
            this.bouton2.Visible = False;
            this.label1.Text = "salut,clic sur bouton2";
    }

    C'est ce que tu voulais?

    @++

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    il faut que tu utilise la propriètè Visible de chaque controle
    +1
    le mieux étant de :
    • mettre les contrôles corresponddant à l'état1 de la forme dans un Panel
    • mettre les contrôles de l'état2 dans un autre panel
    • de gérer les proriétes "Visible" de ces 2 panels.

    Pour faciliter la conception, tu pourras mettre les 2 panels dans un TabControl (chacun dans une page) et lors de l'InitializeComponent faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyPanel1.Parent=this ;
    MyPanel2.Parent=this ;
    MyTabControl.Visble=false ;

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    J'y avais bien pensé à la propriété visible, le problème étant que j'ai besoin de modifier le contenu de ma form pour beaucoup d'objets, ce qui est du coup, assez long si je dois à chaque fois masquer et afficher tel ou tel objet.

    Du coup, je me suis tourné vers les UserControls, que j'affiche quand j'en ai besoin.

    L'idée des panels est une bonne idée par contre, je n'y avais pas pensé.

    Merci pour vos réponses.

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

Discussions similaires

  1. Imprimer le contenu d'une form
    Par olibara dans le forum C#
    Réponses: 7
    Dernier message: 18/05/2008, 21h04
  2. Remplir une liste avec TOUT le contenu d'une combo
    Par jo_la_pasteque dans le forum WinDev
    Réponses: 8
    Dernier message: 14/04/2008, 12h49
  3. Changer le contenu d'une form
    Par iznogoud_23 dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2008, 08h34
  4. copier le contenu d'une forme dans word
    Par didami dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 11/05/2007, 15h35
  5. Copier tout le contenu d'une BD MYSQL sur un autre PC
    Par condor_01 dans le forum Outils
    Réponses: 4
    Dernier message: 06/09/2006, 23h53

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