Propriété TopMost

djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013 - 22 juin 2012 à 15:12
 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

11 réponses

djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
22 juin 2012 à 20:03
Personne n'a d'idée ?
0
Utilisateur anonyme
22 juin 2012 à 22:42
Bonsoir,

Personne n'a d'idée ?
Sans ton code, la réponse est non.
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
22 juin 2012 à 23:29
Ok c'est pas grave merci quand même
0
Utilisateur anonyme
22 juin 2012 à 23:42
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
0

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

Posez votre question
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
23 juin 2012 à 00:21
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 !
0
Utilisateur anonyme
23 juin 2012 à 00:51
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.
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
23 juin 2012 à 01:16
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...
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
23 juin 2012 à 01:19
Par quoi dois-je remplacer Mid() Len() etc ?
0
Utilisateur anonyme
23 juin 2012 à 01:27
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.
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
23 juin 2012 à 19:05
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...
0
Utilisateur anonyme
24 juin 2012 à 07:55
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.
0
Rejoignez-nous