Premier plan [Résolu]

Signaler
Messages postés
12
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
28 novembre 2008
-
Messages postés
12
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
28 novembre 2008
-
Bonjour,

J'ai realise une ihm constituée de trois forms. Je souhaite que lorsque
la principale est activée, les deux autres soient visibles. J'ai essayé
en mettant leur attribut TopMost a true, mais elles sont alors toujours
au premier plan, meme lorsqu'une autre fenetre est activée. Comment
pourrais-je eviter cela?

Merci

11 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
mouarf... quelle nouille je suis...

quand tu ouvres ta fenêtre fille, utilise la méthode Show(parent).

ex :

Form2 f = new Form2();
f.Show(this); // this étant le formulaire courant

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Salut,
Euh, je vois pas trop pourquoi elles ne serait pas visibles !??
Tu ouvres tes fenêtres en faisant un Show ?

<hr size= "2" /> VC# forever
=13319
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
tu peux appeler leur méthode BringToFront()...

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
12
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
28 novembre 2008

Elles ne sont pas visibles lorsque la fenetre principale (qui couvre tout l'ecran) est activée, et passe alors au premier plan.

Merci sebmafate, mais quand dois je appeler cette methode? Lorsque la
fenetre principale est activée (evenement OnActivated je crois)?
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Si je comprends bien tu veux que tes 2 fenetres inactives soient au 1er plan. Bah, à part TopMost, je vois pas.
Si tu a créé tes 2 fenetres avec la principale, il te suffit de les mettre TopMost true quand la principale prend le focus, et de mettre TopMost false quand elle perd le focus.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
je suis du même avis que fregolo... le mieux, dans ton cas est d'utiliser la propriété TopMost de tes fenêtres "filles".

Les évènements Activated et LostFocus de ton formulaire principal te permettrons d'en modifier la valeur.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
12
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
28 novembre 2008

J'ai essayé, mais lorsque je fais TopMost = true, la fenetre secondaire
prend le focus puis le rend a la fenetre principale, ce qui provoque un
nouveau TopMost = true, etc. J'ai alors une boucle infinie et je suis
bloqué sur la fenetre secondaire. Ca ne marche donc pas. Ou alors, je
me suis mal débrouillé.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
dans le Activated, si le TopMost = true... et bah, tu ne le mets pas de nouveau... ;)

genre :

if (!form2.TopMost) {
    form2.TopMost = true;
}

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
12
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
28 novembre 2008

J'ai essayé egalement, mais ça n'a rien changé. Et je sais pas pourquoi. Mais je ne desespere pas...
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
J'ai testé, ca marche, mais tout dépend où se trouve le formSecondaire.Show()
Messages postés
12
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
28 novembre 2008

Ok, merci.

J'ai contourné le probleme en integrant les fenetres filles a l'ihm en tant que panel, mais je me souviendrai de vos conseils.