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 :

Form et multi screen


Sujet :

Windows Forms

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Par défaut Form et multi screen
    Bonjour tout le monde,

    J'ai un petit problème qui me bloque et je ne vois pas trop comment m'en sortir.
    En fait, je suis sur un projet en C#, c'est une application MDI. A un moment donné, je souhaite afficher une form sur un deuxieme écran.
    La première solution que j'ai essayée est de simplement récuperer les tailles des écrans avec les fonctions Screen puis de choisir la position de la form (avec maform.location(1025,1) par exemple) pour qu'elle apparaisse sur le deuxieme écran.

    Le problème c'est que mon application démarre maximisée sur le premier écran, et que ma deuxième form est de type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public MaForm(Form parent)
     {
                InitializeComponent();
                this.MdiParent = parent;
     
                SetStyle(ControlStyles.AllPaintingInWmPaint |ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
    }
    Ayant un parent, le resultat est donc que j'obtiens une scroll bar en bas de mon premier écran pour aller chercher la form tout a droite, car elle apparait dans le "cadre" du parent, toujours sur le premier écran alors qu'il n'y a rien sur le deuxième.
    Je me suis dit bon pas grave, ne lui donnons pas de "parent" et tout ira bien, mais le probleme c'est que a la fermeture de cette form, je dois appeller une fonction d'une autre form, ce que je faisais ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ((FrmMain)this.MdiParent).AutreForm.StopFunction();
    ((FrmMain)this.MdiParent).AutreForm.MaForm = null;
    //MaForm est appelle depuis AutreForm
    Ce qui entraine un erreur puisque il n'y a plus de MDIParent.
    Je ne trouve pas d'autre moyen d'acceder a cette fonction que je ne peux pas déplacer.

    J'ai pensé sinon a demarrer l'application maximisee sur les deux écrans mais j'ai pas trouvé de moyen...

    Si quelqu'un a une idée je suis preneur!
    J'espere avoir ete clair,
    merci bien

    Vlad

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Tu peux toujours stocker la form parent dans un variable perso frmMyParent de type frmMain par exemple et faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    frmMyParent = parent;
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.MdiParent = parent;
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.frmMyParent.AutreForm.StopFunction();
    this.frmMyParent.AutreForm.MaForm = null;
    Cdt.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Par défaut
    D'abord, merci beaucoup pour cette réponse.

    Ok, j'ai compris l'idée, mais le problème c'est que en faisant comme tu dis, la partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.frmMyParent.AutreForm.StopFunction();
    Ne passe pas, il ne retrouve pas la form "AutreForm". Du coup j'ai contourné le problème en faisant un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((FrmMain)this.frmMyParent).FrmCameraView.StopFrmCalibration();
    Ce qui a l'air de fonctionner correctement. Je fais pas de bêtise en faisant ça? (Parce que si je stock la form "parent" dans une variable de type FrmMain, il me met une erreur de type à la compilation, donc je stock dans une variable de type Form, puis je cast, mais ça me parait pas très correct...)

    Voilà, dis moi ce que tu en penses, en tout cas ça a l'air de marcher, et merci beaucoup de ton aide.

    a+

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Citation Envoyé par Vlad_Oliv Voir le message
    Parce que si je stock la form "parent" dans une variable de type FrmMain, il me met une erreur de type à la compilation
    C'est quoi exactement cette erreur ?

    Toi à mon avis, t'as laissé form dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public MaForm(Form parent)
    Et faudrait mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public MaForm(FrmMain parent)
    J'ai bon non ?

    Cdt.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Par défaut
    Non, je ne pense pas.

    Le problème est lorsque je crée ma form, j'appelle (depuis une autre form "fille"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_frmCalibration = new FrmCalibration(this.MdiParent);
    A ce moment là si mon constructeur est de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public FrmCalibration(FrmMain parent)
    J'ai alors une erreur:
    "cannot convert from 'System.Windows.Forms.Form' to 'Project.FrmMain'"

    Peut-être que ça vient du fait que mon frmMain est déclaré ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    namespace Project
    {
        public partial class FrmMain : Form
        { ...}
    }
    Mais je n'ai pas codé cette partie du projet et je préfèrerais ne pas la toucher.
    Comme j'ai fait ça à l'air de marcher, donc je pense laisser ainsi.

    Merci beaucoup en tout cas pour tes réponses )
    Bien cordialement,

    Olivier

Discussions similaires

  1. Form en full screen
    Par james_kirk dans le forum Windows Forms
    Réponses: 7
    Dernier message: 30/04/2008, 17h13
  2. Réponses: 3
    Dernier message: 26/01/2007, 18h42
  3. [Debutant] date et form recherche multi criteres
    Par Oliviers dans le forum Access
    Réponses: 3
    Dernier message: 24/01/2007, 17h13
  4. [Forms]connexion forms-oracle multi utilisateurs
    Par hrezzaz dans le forum Forms
    Réponses: 9
    Dernier message: 02/05/2006, 10h56
  5. [Multi screen] Comment spécifier l'écran par défaut
    Par portu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 01/03/2006, 13h18

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