Propriété TopMost

Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
- - Dernière réponse :  Utilisateur anonyme - 24 juin 2012 à 07:55
Bonjour !

J'ai un problème qui me parait plutôt bête, je m'explique :

J'ai un formulaire (appelons le FOND) que j'utilise comme fond (en plein écran),
devant lequel j'affiche un second formulaire plus petit (appelons le PETIT), qui me sert à afficher des images etc.

Et enfin un formulaire TEXTE, encore plus petit, qui me sert à afficher des messages (comme un msgbox), que j'affiche de temps en temps avec la méthode ShowDialog().

Peu importe la façon dont j'utilise TopMost, à chaque fois que je lance TEXTE, mon formulaire FOND disparait quelques dixièmes de seconde (laissant entrevoir mon bureau) et réapparait, comme si le programme voulait réactualiser l'ordre des formulaires...

Parfois, il arrive même qu'une fenêtre extérieure (le programme VB par exemple) vienne s'intercaler entre FOND et PETIT

Enfin bref. Est-il possible d'empêcher cet effet de "clignotement" très désagrable, qui laisse apparaitre le bureau dans un programme censé être en plein écran...

Merci de vos réponses
Afficher la suite 

11 réponses

Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Personne n'a d'idée ?
Commenter la réponse de djedjeska
0
Merci
Bonsoir,

Personne n'a d'idée ?
Sans ton code, la réponse est non.
Commenter la réponse de Utilisateur anonyme
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Ok c'est pas grave merci quand même
Commenter la réponse de djedjeska
0
Merci
M'enfin, je souhaitais que tu produises ici la portion de code suspectée
Il faut vraiment que je reprenne des cours de français
Commenter la réponse de Utilisateur anonyme
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Hum... disons que ce serait un peu long à écrire...

C'est juste un jeu de TopMost et ShowDialog.

Je te montre comment j'écris un message si tu veux :

    Sub SubMessages()

        'REDIMENSIONNEMENT DU MESSAGE
        DébutMessage = 1
        FinMessage = 1
        Message = " " & Message & " "
        Do While DébutMessage < Len(Message)
            FinMessage += 60 'Ici se règle la longueur des messages
            If FinMessage < Len(Message) Then
                FinMessage = InStr(FinMessage, Message, " ")
            Else
                FinMessage = Len(Message)
            End If
            Dialogues.Label1.Text = Mid(Message, DébutMessage, FinMessage - DébutMessage)
            Dialogues.ShowDialog()
            DébutMessage = FinMessage
        Loop
        Dialogues.Hide()
    End Sub


Sachant que Dialogues correspond à mon fameux formulaire TEXTE dans mon exemple.

A chaque fois que je lance un message, j'appuie sur entrée jusqu'à ce que le message s'arrête. Mais à chaque fois que j'appuie sur entrée, mon formulaire de fond (FOND) s'efface un très court instant, et réapparait, de sorte que je vois mon bureau apparaitre !
Commenter la réponse de djedjeska
0
Merci
Je n'ai pas lu ton code en profondeur car je ne suis pas habitué aux syntaxes vb6.
Mid (substring), Len (var.Length), Instr (indexof) et leurs potes me sont terriblement indigestes.
Je te conseille de supprimer l'import automatique de Microsoft.Visualbasic dans les propriétés de ton projet.

En outre, tu peux forcer le premier plan avec la méthode BringToFront du formulaire à afficher. Pas sûr que ça marche puisque nous n'avons pas le code complet.
Commenter la réponse de Utilisateur anonyme
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Lorsque je retire l'import automatique, j'ai des dizaines d'erreurs qui apparaissent... notamment "IsNumeric" ou même "FileOpen" etc. qui deviennent inutilisables... Comment je fais moi ? J'ai besoin de les utiliser !

Sinon pour ce qui est du BringToFront je connais mais ça ne change rien... Dans tous les cas, mon formulaire de fond s'efface quelques dixièmes de seconde... Je pense que c'est dû à la méthode "ShowDialog", qui doit modifier l'ordre d'affichage ou quelque chose comme ça...
Commenter la réponse de djedjeska
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
Par quoi dois-je remplacer Mid() Len() etc ?
Commenter la réponse de djedjeska
0
Merci
comment je fais moi ? J'ai besoin de les utiliser !
Tu n'es pas obligé de le faire. C'est juste un conseil. Cet import assure une compatibilité de code pour les projets convertis.

Par quoi dois-je remplacer [...]
On trouve tout ceci sur msdn.

Je pense que c'est dû à la méthode "ShowDialog"
Et si tu utilises la seule surcharge de la méthode ShowDialog(owner) ça donne quoi ?
owner étant le formulaire appelant.
Commenter la réponse de Utilisateur anonyme
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
0
Merci
On trouve tout ceci sur msdn.

J'ai déjà regardé mais comme la fonction Mid() existe, je ne sais même pas comment poser ma question... Dès que je cherche je trouve Mid()... Et jusqu'à aujourd'hui je pensais que c'était une fonction normale de vb.net

Et si tu utilises la seule surcharge de la méthode ShowDialog(owner) ça donne quoi ?
owner étant le formulaire appelant.

J'avais essayé, me disant qu'en sélectionnant le bon owner, ça éviterais la réactualisation des formulaires, mais non. Rien à faire.

Je pense que si personne n'a d'idée, je vais créer un petit programme basique pour illustrer mon problème...
Commenter la réponse de djedjeska
0
Merci
Pour la manipulation de strings, c'est ici (prévois beaucoup de café avant).

Je pense que si personne n'a d'idée, je vais créer un petit programme basique pour illustrer mon problème...
Excellente idée. Et tu t'apercevras sûrement par toi même, ce qui cloche dans ton premier code.
Commenter la réponse de Utilisateur anonyme