Rafraichissement "propore" d'un panel [Résolu]

Signaler
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
-
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
-
Salut à tous,

Habituellement, je cherche beaucoup avant de poser une question, mais la je ne sais meme pas avec quel mots clés chercher!

Voila, suite à un click sur une photo de mon application, j'affiche un panel regroupant bon nombre de textbox, combo et autres controls qui me renseigne sur la photo sélectionnée.

Cela marche très bien, a ceci prêt que lors de l'affichage du panel, il faut un temps avant qu'il ne s'affiche correctement, comme si il s'affichait AVANT que la fonction précédente ne soit terminée.

En gros, ma commande fonctionne comme ceci.

Private Sub DetailShoot(ByVal sender As Object, ByVal e As EventArgs)
        'CLICK

        Dim cible As Panel = DirectCast(sender, Panel)

        IndexSelctShoot = cible.Tag
        Call Find_Shoot(IndexSelctShoot) 'Trouver la photo dans la BDD
        Call Write_Panel()               'Remplir le panel
        Me.Panel_Shoot.visible=true      ' Afficher le panel

    End Sub




Y a-t-il un moyen d'attendre que toutes exécutions soit terminer avant d'afficher le panel?

Merci de votre attention,

Jimy

Pensez: Réponse acceptée
'**********************************************

6 réponses


Je ne vois pas trop ce que tu pourrais faire.
Tente quand même de déléguer le travail à un thread pour voir si ça change quelque chose.
Public Class Form1

    Delegate Sub DelegateTraitement()
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim t As New Threading.Thread(AddressOf Job)
        t.Start()
    End Sub

    Private Sub Job()
        If Me.InvokeRequired Then
            Me.Invoke(New DelegateTraitement(AddressOf Job))
        Else
            'traitement de ton panel
            '...
            Panel1.Visible = True
        End If
    End Sub
End Class

Bonjour,

il faut un temps avant qu'il ne s'affiche correctement

Merci de préciser un peu mieux ce phénomène.
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
Salut Banana,

Et bien, une image vaut mieux que cent mots...




Cet état ne reste qu'une petite seconde, mais ce n'est pas très esthétique.
Comme tu peux le voir dans le code, je ne rends visible le panel qu'après son remplissage, pensant palier à ce problème...En vain!
Jimy

Pensez: Réponse acceptée
'**********************************************
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
Merci pour l'exemple, je vais tenter ca et reviens te dire! ;)

Jimy

Pensez: Réponse acceptée
'**********************************************

Oui, vérifie quand même que cette sub ne soit pas appelée plusieurs fois car je constate que tu l'abonnes dynamiquement à un événement (clause Handles absente).
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
Salut,

pas beaucoup de dispo ces temps ci, mais ces soir j'ai testé ta solution, et cela rend l'affichage plus fluide. J'avais une boulette bien planquée qui me ralentissait aussi l'affichage. Du coup c'est beaucoup mieux, merci.

Et merci pour le multi-thread en VB NET, je ne connaissais qu'en VB6, super! ;)

Jimy

Pensez: Réponse acceptée
'**********************************************