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 :

[2.0] Focus & Forms


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Par défaut [2.0] Focus & Forms
    Voila je dois a l'ouverture d'un Forms A (Liste d'entête) ouvrir plusieurs Forms B (Les Détails).

    Donc dans le Load de A j'ai un truc du style


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Foreach ....
    {
       B oB = new B()
       B.show ();
    }
    Mon problème de que l'un des Forms B doit avoir le focus a la fin de cette opération, or comme A reprend le focus a la fin du Load je ne sais pas trop comment faire, on m'a donné une piste de forcer le Focus de A avant le foreach

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    this.focus();
    Foreach ....
    {
       B oB = new B()
       B.show ();
       B.focus();
    }

    Mais sans résultat ...

    Quelqu'un aurait-il une solution ?

  2. #2
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Au lieu de te mettre sur le Load, il faut se mettre sur le Activated.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Par défaut
    J'ai un petit souci, dans ma boucle où j'ouvre mes B je les ouvres tous en minimiser et un en normal qui prendra le focus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Foreach ....
    {
       B oB = new B()
       B.show ();
       if (toto)
       {
          B.WindowState = FormWindowState.Minimized;
       }
       else 
       {
          B.WindowState = FormWindowState.Normal;
          B.Focus()
    }
    Et a chaque fois que je touche WindowState sur me Forms B ca me relance l'Activated .... donc ca boucle ...

  4. #4
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Voila mon code, je n'ai pas de pb :
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    protected override void OnActivated(EventArgs e)
    {
    base.OnActivated(e);
    for (int i = 0; i < 3; i++)
    new Form2(true, i).Show();
    Form2 frm2 = new Form2(false, 3);
    frm2.Show();
    frm2.Focus();
    for (int i = 4; i < 7; i++)
    new Form2(true, i).Show();
    }
    }

    public class Form2 : Form
    {
    public Form2(bool minimized, int i)
    {
    if (minimized)
    WindowState = FormWindowState.Minimized;
    Text = i.ToString();
    }
    }

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Par défaut
    Citation Envoyé par Matthieu MEZIL
    ...
    protected override void OnActivated(EventArgs e)
    {
    base.OnActivated(e);
    ...
    Quelle est l'utilité du Base.OnActivated(e); ?

  6. #6
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Je suis dans ma classe Form1.

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2006
    Messages : 107
    Par défaut
    Pourrait tu être plus précis ?
    Il me semble que qu'il cette instruction n'est pas necessaire sauf si tu m'expliques pourquoi ...

  8. #8
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    surcharger la méthode OnActivated de Form est dans ton cas, équivalent à te brancher sur l'évènement Activated. En effet, c'est la méthode OnActivated qui lance l'évènement Activated. La surchargé t'évite te permet de ne pas lancer l'évènement Activated (mais dans ton cas tu t'en fous). C'est surtout que pour ton proj, je n'ai pas ouvert le designer et que c'est plus rapide de faire le override de OnActivated que de se brancher sur l'évènement Activated. Un bon informaticien est fainéant, c'est pour ça que j'aime C# 3.0 :-)

Discussions similaires

  1. Donner le focus à une form
    Par Jean-Jacques Engels dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2011, 23h43
  2. [AC-2007] Set Focus sur form
    Par AlainL dans le forum VBA Access
    Réponses: 7
    Dernier message: 05/01/2010, 18h06
  3. Problème Focus sur Form
    Par Hurin dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/08/2008, 08h13
  4. Réponses: 2
    Dernier message: 06/07/2008, 20h24
  5. [Formulaire]Set focus sélection form continu
    Par delcroixf dans le forum IHM
    Réponses: 5
    Dernier message: 29/03/2007, 23h21

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