Affichage gênant lors de passage visible à non visible

Résolu
VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 6 septembre 2019 - 6 oct. 2009 à 14:40
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 6 oct. 2009 à 22:07
Bonjour,

J'ai un affichage un peu gênant :

J'ai 3 panels dans une form. Les 2 premiers sont en dock.Top et le dernier en dock.Fill.

Dans mon panel en dock.fill, j'ai 2 boutons :
1 me permettant de rendre visible le panel 1 et non le panel 2
l'autre me permettant l'inverse (panel 2 visible et panel 1 non visible).

Evidemment, lors d'un changement de visibilité, pendant un cours instant, le dernier panneaux étant en dock.fill occupe la place du panneau rendu non visible pour ensuite revenir à sa place quand le 2e panneau devient visible.

Je trouve ça un peu gênant pour les yeux...même si le comportement est logique.
Savez vous comment verrouiller l'affichage avant d'avoir complètement fini la gestion de celui-ci ?

Merci

5 réponses

VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 6 septembre 2019
6 oct. 2009 à 17:50
Bon j'ai trouvé :


Me.SuspendLayout()

' Faire le changement

Me.ResumeLayout()


Ainsi le rafraîchissement est inhibé pendant le changement.
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 oct. 2009 à 16:48
salut,

je viens de tester tant avec les 2 premiers panels de la même taille que le 2e beaucoup plus large, je ne vois pas le problème

une fois un panel invisible, il n'occupe plus de place
l'autre occupe alors la place du premier (plus ou moins), et le 3e prend le reste

je n'ai pas de scintillement ou quoi que ce soit, le fonctionnement est "normal"

si ta demandes est, au final, que le panel 3 ne change jamais de taille (selon les 2e premiers bien sûr, sinon juste un dock.bottom), il te faut mettre les 2 premiers panel dans un 4e qui lui est transparent et reste fixe (dock.none)
le panel3 restera donc à taille fixe (du bas du 4e au bas de ta form)

ou alors j'ai mal compris....
[hr]
0
VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 6 septembre 2019
6 oct. 2009 à 17:25
Salut,

Merci pour ta réponse mais en ce qui me concerne, j'ai bel et bien un scintillement.

Pour être sûr que l'on parle de la même chose :
J'ai :
Panel 1 -> dock.top
Panel 2 -> dock.top
Panel 3 -> dock.fill

Panel 1 et Panel 2 ne sont jamais visible en même temps :
Panel 1 -> dock.top
Panel 3 -> dock.fill
OU
Panel 2 -> dock.top
Panel 3 -> dock.fill

Quand je fais :
Panel1.visible = false
Panel2.visible = true

Je vois clairement dans l'exécution, Panel 3 prendre toute la form puis revenir à sa place dès que Panel 2.visible = true.
Comme je switch la visibilité du Panel1 vers le panel2, le changement est visible à l'oeil.

J'avais essayé de mettre le panel3 en dock.Bottom, ça fonctionne mais ça ne m'arrange pas. J'ai également essayé de capter la taille et la location du panel3, puis de le passer en dock.none, de lui affecter taille et location, faire le changement puis le repasser en dock.fill mais c'est pareil.

Je vais essayer de le faire sur une appli neuve pour voir si le phénomène est toujours visible car je ne comprends pas pourquoi tu ne le vois pas.
0
VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 6 septembre 2019
6 oct. 2009 à 17:36
Je viens de refaire le test sur une appli neuve :
Panel1- > dock.top avec backcolor rouge
Panel2- > dock.top avec backcolor noir
Panel3-> dock fill avec backcolor jaune
un bouton sur le panel 3 avec l'évènement click ci-dessous


 
Dim toggle As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If toggle Then
            Panel1.Visible = False
            Panel2.Visible = True
            toggle = False
        Else
            Panel2.Visible = False
            Panel1.Visible = True
            toggle = True
        End If
    End Sub

Et là, on voit clairement en cliquant (en le faisant plusieurs fois, quitte à s'acharner), la couleur jaune prendre la totalité de la form pendant 1/10e de seconde certes mais je le vois.
Le vois tu ? Comment bloquer le rafraîchissement de la form pendant ce laps de temps ?

Merci
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 oct. 2009 à 22:07
sans m'acharner j'avais à peu près le même code (avec les mêmes couleurs d'ailleurs), sans effet malgré une machine très loin derrière les récentes

tant mieux si le prob est réglé

bonne soirée

[hr]
0
Rejoignez-nous