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 :

Lancer l'appli dans l'écran actif au démarrage


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 156
    Points : 108
    Points
    108
    Par défaut Lancer l'appli dans l'écran actif au démarrage
    Bonjour,

    Je rencontre un problème pour savoir quel écran est actif au démarrage de mon appli.
    Mon but est de lancer mon application dans le même écran que celui où se trouve l’icône qui la lance sur le bureau.

    J'ai deux écrans.
    L'icône est sur l'écran 2.
    Au démarrage j'ouvre une splash screen qui se lance, elle, correctement sur l'écran où se trouve l'icône de l'appli (en l’occurrence sur l'écran 2) mais la form principale toujours sur l'écran 1.

    L'écran actif est donc bien reconnu pour la splash screen.
    Je la déplace dans l'écran 1, elle s'ouvre dans l'écran 1.
    Pourquoi l'écran change-t-il ensuite ?
    Comment faire pour indiquer le bon écran au lancement de ma main form ?

    J'utilise une méthode trouvée sur le net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            private void CenterOnSecondMonitor(object sender)
            {
                var form = (Form)sender;
                var area = Screen.AllScreens.Length > 1 ? Screen.AllScreens[1].WorkingArea : Screen.PrimaryScreen.WorkingArea;
                form.Location = new Point(((area.Width - form.Width) / 2) + area.X, (area.Height - form.Height) / 2);
     
            }
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            private void MainForm_Load(object sender, EventArgs e)
            {
                ShowLoadGif();
                CenterOnSecondMonitor(sender);
              // etc etc ...
            }
    Sauf que cette méthode force le démarrage toujours sur l'écran 2 quand il existe.
    Ce n'est pas ce que je souhaite.
    Merci !

  2. #2
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 156
    Points : 108
    Points
    108
    Par défaut
    Finalement j'ai trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                Screen monecran = Screen.FromPoint(Cursor.Position);
                this.Location = monecran.Bounds.Location;
    ceci donc :
    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
     
            private void MainForm_Load(object sender, EventArgs e)
            {
                ShowLoadGif(); // Splash Screen
     
                this.Size = new Size(1500, 870);  
     
                Screen monecran = Screen.FromPoint(Cursor.Position);
                this.Location = monecran.Bounds.Location;
                int screenActifX = monecran.WorkingArea.X;
                int screenActifW = monecran.WorkingArea.Width;
                int screenActifH = monecran.WorkingArea.Height;
     
                int KX = ((screenActifW - this.Width) / 2) + screenActifX;
                int KY = (screenActifH - this.Height) / 2;
     
                this.Location = new Point(KX, KY);
     
    etc etc ...
    }
    Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/02/2011, 17h30
  2. Réponses: 0
    Dernier message: 03/02/2011, 13h54
  3. Réponses: 4
    Dernier message: 02/08/2007, 12h14
  4. Réponses: 2
    Dernier message: 22/01/2007, 20h06
  5. lancer une appli a travers une autre appli
    Par tazamorte dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/04/2004, 11h08

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