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 :

Panel pour toutes les Form [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut Panel pour toutes les Form
    Bonjour

    J'aimerais un créé un panel qui serait disponible pour les 8-10 form de mon programme

    est-ce possible et comment ?

    il doit s'afficher toujours à la même place mais je dois l'appeler dans chaque fenêtre

    comment procéder pour pas le créer sur mes 10 form ? merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Tu peut créer un control Utilisateur ou alors par code pour la création de la form et des controls.

    Voici un exemple par code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                Form F = new Form();
                F.Text = "Titre";
                Panel P = new Panel();
                Button B = new Button();
                B.Text = "Mon boutton";
                F.Controls.Add(P);
                P.Controls.Add(B);
                F.Show();

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Sinon, c'est possible de faire un code qui créé un panel de 50 px par 50 par exemple, en bas à droite de l'écran ?

    Ensuite faire le code de l'action qui se passe au Click du panel ?

    Par exemple mettre ça dans une classe :

    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
    private void CreatePnlOpenForm()
            {
                Panel pnlOpenForm = new Panel();
                pnlOpenForm.Height = 50;
                pnlOpenForm.Width = 50;
                pnlOpenForm.Location = new Point(Screen.PrimaryScreen.Bounds.Width - pnlOpenForm.Width, Screen.PrimaryScreen.Bounds.Height - pnlOpenForm.Height);
                pnlOpenForm.BackColor = Color.Red;
                Controls.Add(pnlOpenForm);
                pnlOpenForm.Click += new EventHandler(pnlOpenForm_Click);
            }
     
    private void pnlOpenForm_Click(object sender, EventHandler e)
            {
                MessageBox.Show("Test");
            }
    Et ensuite simplement appeler ma classe à l'initialisation de mes Form pour appeler le panel ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    J'oubliai la base, tu peut créer ta form avec l'interface graphique normalement puis l'instancier plusieurs fois, ça correspondrai plus à ton besoin je pense, les form étant les même ?!

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    J'ai 10 WinForm ce n'est pas les mêmes mais je veux un panel au même endroit

    Après dans le projet on peut ajouter une classe type "Contrôle Utilisateur" dans laquelel je peux par exemple placer un panel mais je ne sais pas comment l'appeler ensuite depuis mes autre fenêtres

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Pourquoi ne pas le créer le panel dans chaque form puisque se sont des fenêtres différentes et déjà créer/existante, je suppose, dans ton projet ?

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Oui je peux faire ça,

    comment forcer le panel AU-DESSUS de tout le reste ?

    je tente BringToFront mais ça ne fonctionne pas

  8. #8
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    Menu Visual Studio :
    Affichage (View) => Autres fenêtres (Other windows) => Structure du document (Document Outline)

    Ca te permet de voir et de gérer l'encapsulation de tes différents contrôles Là, le panel que tu veux au dessus de tout le monde va se retrouver à la racine de ta Form.
    Nom : pnl.png
Affichages : 1320
Taille : 23,8 Ko

    Le BringToFront() et SendToBack() a la même utilité que les flèches Haut et Bas de cet onglet (Structure du document).


    EDIT : Attention, dès que tu vas vouloir déplacer à la souris ton panel, il va automatiquement l'inclure dans le contrôle sur lequel le coin haut gauche se trouve
    "Hope for the best, but prepare for the worst."

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Ok, et comment lui donner de l'opacité ou le rendre invisible mais toujours en pouvant effectuer une action en cliquant sur lui ?

    Merci

  10. #10
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Est tu vraiment sur de vouloir faire cela ? Ça devient assez spécifique comme demande.
    Si tu souhaite le rendre transparent utilise la class TransparentPanel ci-dessous

    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
        public class TransparentPanel : Panel
        {
            protected override CreateParams CreateParams
            {
                get
                {
                    SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.SupportsTransparentBackColor, true);
                    CreateParams cp = base.CreateParams;
                    cp.ExStyle |= 0x00000020;
                    return cp;
                }
            }
     
            protected override void OnPaintBackground(PaintEventArgs e)
            {
                if (this.BackColor != System.Drawing.Color.Transparent)
                    base.OnPaintBackground(e);
            }
        }
    Il te suffit de modifer la BackColor et de demander le rafraichissement de ta form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                transparentPanel1.BackColor = System.Drawing.Color.Aqua;
                this.Refresh();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                transparentPanel1.BackColor = System.Drawing.Color.Transparent;
                this.Refresh();

  11. #11
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Super merci, mais là le panel je ne pourrai pas lui faire une action au click ? merci

  12. #12
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Si tu le peux

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

Discussions similaires

  1. Créer un seul site pour toutes les plates-formes
    Par vermine dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 23/08/2018, 13h37
  2. Réponses: 6
    Dernier message: 20/01/2012, 17h36
  3. Sub valable pour toutes les forms d'une application
    Par serana71 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2010, 16h49
  4. variable globle pour toutes les forms
    Par ryoussef19 dans le forum C++/CLI
    Réponses: 3
    Dernier message: 01/08/2007, 17h43

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