Rafraichissement "propore" d'un panel

Résolu
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 - 2 janv. 2013 à 14:58
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 - 10 janv. 2013 à 22:40
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

Utilisateur anonyme
3 janv. 2013 à 13:24
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
3
Utilisateur anonyme
2 janv. 2013 à 21:30
Bonjour,

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

Merci de préciser un peu mieux ce phénomène.
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
3 janv. 2013 à 11:01
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
'**********************************************
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
3 janv. 2013 à 18:00
Merci pour l'exemple, je vais tenter ca et reviens te dire! ;)

Jimy

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

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

Posez votre question
Utilisateur anonyme
3 janv. 2013 à 19:09
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).
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
10 janv. 2013 à 22:40
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
'**********************************************
0
Rejoignez-nous