VB 2005 : Fenêtre toujours au premier plan ? Problème avec TopMost = True

Résolu
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006 - 6 juin 2006 à 12:29
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006 - 6 juin 2006 à 17:16
Bonjour à tous,
Avec Visual Basic 2005, je cherche à créer des fenêtres qui soient toujours au premier plan de l'application mais, contrairement avec la propriété TopMost à vrai, pas par rapport aux autres applications.
Je voudrais avoir exactement le même résultat qu'avec les boîtes de dialogue Rechercher dans le Bloc-notes ou dans Internet Explorer.
J'ai essayé sans succès en modifiant dynamiquement la propriété TopMost ou avec l'API SetWindowPos mais sous VB 2005, cette dernière provoque une erreur PInvokeStackImbalance.
Quelqu'un sait-il comment faire ?
Merci d'avance.

6 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 juin 2006 à 12:35
Bonjour

Tu as essayer .Show(FormMère) ou showdialog ?

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
3
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
6 juin 2006 à 12:58
Show ne me convient pas car si l'uitlisateur clique à côté de la fenêtre, elle passe systématiquement en-dessous.
Et ShowDialog ne me convient encore moins car l'utilisateur ne peut plus du tout aller sur la fenêtre principale.


Mais merci pour la réponse.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 juin 2006 à 13:05
Bonjour

Essaye, je crois qu'il y a un evenement pour savoir quand ta form est déselectionnée, tu fais un test, et si aucune de tes forms n'est active, tu met TopMost à False sinon, à true.

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
0
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
6 juin 2006 à 13:24
J'ai déjà essayé dans ce sens mais sans aboutir à un résultat concluant.
De plus, lorsque je met la valeur TopMost à True, la fenêtre prend le focus et cela perturbe la saisie de l'utilisateur.
Je ne pense pas que modifier cette propriété dynamiquement soit la solution.
Il doit sûrement y avoir une meilleure méthode.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 juin 2006 à 13:30
Bonjour

Sincerement, je ne vois pas mieux.
Je ne vois que tu enregistre (dans une variable globale par exemple) la form qui vient d'être activée, et lorsque ta fenêtre à affichée en topmost prend le focus elle active la fenêtre précédente (il faut controler si le topmmost n'est pas à true déjà pour éviter des erreurs).

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
0
addamsmercredi Messages postés 121 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 27 juillet 2006
6 juin 2006 à 17:16
En fait, tu m'avais donné la solution dès le début mais je n'avais pas compris.
Il suffit de faire .Show (Me)
C'est tout simple mais je n'y aurais jamais pensé sans toi car je faisais toujours .Show ()
Merci beaucoup.
0
Rejoignez-nous