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 :

Reactivation d'une forme


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Reactivation d'une forme
    Salut à tous.

    Voila mon problème:
    J'utilise une form MDI où évidement plusieurs formes peuvent s' afficher en même temps.
    Mettons que j'ouvre Form1, ensuite form2 en passant par un menu.
    Form2 est la forme active. Maintenant je veux que Form1 redevienne active, en d'autres mots recoive le focus, quand je ci\lique à nouveau sur le menu.

    J'ai essayé Topmost et topLevel, mais ca n'a aucun effet apparent .

    Voici le code que j'utilise : A noter que CA.frmrefundBadDB est une variable publique qui prend la valeur 'true' quand une forme est chargée pour la première fois, ceci afin d'empecher que plusieurs instances de la meme forme en cliquant sur le menu.

    Merci de vôtre aides.
    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
    //
     
    FrmRefundBadDB frm = new FrmRefundBadDB( );
                                  if (!CA.frmrefundBadDB)
                                  {
     
                                            frm.MdiParent = this;
                                            frm.Show();
                                  }
                                  else
                                  {
     
                                  foreach (var form in this.MdiChildren)
                                            {
                                            form.TopLevel = false;
                                            form.TopMost = false;
                                                      form.Visible = false;
     
                                            }
                                  frm.TopLevel = true;
                                  frm.TopMost = true;

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Si mes souvenirs sont bons, un nouvel appel à frm.Show() permet de donner le focus à la fenêtre lorsque celle-ci est déjà affichée.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut Kaidan, et merci pour l' aide.
    Malheureusement si j' utilise à nouveau frm.show() une nouvelle instance de la forme est crée, et c'est ce que je veux justement évité par la condition que j'utilise : if (!CA.frmrefundBadDB)

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    le .show permet effectivement de la ramener au premier plan
    sinon .bringtofront marche aussi

    c'est le new qui fait que c'est une nouvelle form, pas le .show donc ton code ne vas pas

    en théorie il faut garder une référence vers la fenetre en question, si elle vaut null tu en instancie une que tu mets dans la variable et tu l'affiches
    sinon tu fais .bringtofront
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Hélas, .bringtofront ne marche pas non plus, je viens de l'essayer

    En effet, je crée une instance de la forme si CA.frmrefundBadDB est false.
    CA.frmrefundBadDB prend la valeur true dans le load event.
    Maintenant l'instance est active, j' appelle une autre forme qui devient topmost par défaut. Maintenant si je clique à nouveau sur le menu pour appeller la premiere forme, la condition introduite par mon 'if' empeche la creation d'une nouvelle instance et j'éspérais que le 'else' aller me permettre de rendre le focus a la premiere forme, mais non, c'est pas le cas...

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    .topmost veut dire que la forme sera toujours au desus, donc faire bringtofront sur une autre n'ira pas
    donc laisse topmost et toplevel à false sur toutes
    et ne réinstancies pas de form si tu en as dejà une d'instancié ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    merci sperot15,
    si je t'ai bien compris, c'est exactement ce que je tente de réaliser par ce block :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach (var form in this.MdiChildren)
                                            {
                                            form.TopLevel = false;
                                            form.TopMost = false;
                                                      form.Visible = false;
     
                                            }
                                  frm.TopLevel = true;
                                  frm.TopMost = true;
    Je mets donc toutes les formes actives a false et j réactive ma preniere forme 'frm' mais je sais pas pourquoi toplevel, topmost et ni bringtoFront ne donne de resultats.

Discussions similaires

  1. [VB.NET]Comment Imprimer une form
    Par bernard06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2011, 17h43
  2. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 12h45
  3. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 11h06
  4. [VB6] masquer la barre de titre d'une form
    Par tiboleo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2002, 17h54
  5. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51

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