Propriété TopMost

Signaler
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013
-
 Utilisateur anonyme -
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

11 réponses

Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

Personne n'a d'idée ?

Bonsoir,

Personne n'a d'idée ?
Sans ton code, la réponse est non.
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

Ok c'est pas grave merci quand même

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
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

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 !

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.
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

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...
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

Par quoi dois-je remplacer Mid() Len() etc ?

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.
Messages postés
90
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
25 mai 2013

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...

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.