IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 .NET Discussion :

UC personnalisées et effets de clignotement indésirables


Sujet :

.NET

  1. #1
    Membre averti

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Points : 310
    Points
    310
    Par défaut UC personnalisées et effets de clignotement indésirables
    Bonjour,

    Mon précédent post sur ce sujet étant un peu passé au travers, je me permets de revenir à la charge pour un problème que je n'ai toujours pas résolu.

    J'ai construit un contrôle utilisateur fort simple puisqu'il se compose d'une bête textbox dotée d'une source d'autocompletion.

    Sur l'événement Enter de cette dernière, je mets à jour la liste des objets qui fait office de source d'autocompletion.

    Tout fonctionne comme je le souhaite, la liste est toujours le plus à jour possible et c'est ce dont j'ai besoin, l'application fonctionnant sur plusieurs postes à la fois.

    Seulement, côté affichage, à chaque fois que l'UC prend le focus, il y a un fort désagréable effet de clignotement.

    Voici le code que j'ai mis dans l'événement Enter de ma textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    Private Sub TextBoxPh_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxPh.Enter
     
    ' Je suspends les layouts de la textbox et de l'UC
    Me.SuspendLayout()
    Me.TextBoxPh.SuspendLayout()
     
            ' Je charge ma liste
            Me._listeSources = BDD.GetSources
            If Me._listeSources IsNot Nothing Then
                Me.SourceSources.Clear()
                For i As Integer = 0 To Me._listeSources.Count - 1
                    Dim SRC As Source = Me._listeSources(i)
                    Me.SourceSources.Add(SRC.ToString)
                Next
                If Me._premierPassage Then
                    SetSource(Me.SourceSources, Me.TextBoxPh)
                    Me._premierPassage = False
                End If
            End If
     
    Me.TextBoxPh.ResumeLayout()
    Me.ResumeLayout()
     
    End Sub
    D'avance, merci pour votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    A mon avis tu devrais essayer de capter tes événement Paint.

    En gros tu dois empêcher ton contrôle de se re-painter tant qu'il n'est pas à jour.

    C'est à dire que tu captes l'événement OnPaint, tu ajoutes à ton contrôle une propriété "IsUpdating";
    Dans l'événement "O¨Paint", si IsUpdating=false , alors tu laisses le contrôle se paint; sinon tu ne fais rien.


    Mais si tu avais un peu plus (genre un petite appli en exemple); ça serait plus simple.

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    suspendlayout et resumelayout peuvent p-e t'aider.

    sinon pour les lourds redessinement, faut regarder du côté du doublebuffering.

    je sais pas laquelle des deux répond à ton soucis mais je pense qu'il y a un fort rapport et que tu pourrais creuser cette piste
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Déjà si le contrôle n'est dessiné qu'une fois et pas n, ça devrait mathématiquement ne plus clignoter..

  5. #5
    Membre averti

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Points : 310
    Points
    310
    Par défaut
    Hello tout le monde,

    Merci pour vos réponses.

    Nous avons déménagé la boîte ces derniers jours, d'où mon silence. Mais maintenant, tout est rentré dans l'ordre et j'ai pu me pencher à nouveau sur ce problème.

    J'ai d'abord essayé la méthode proposée par B.AF (interception d'OnPaint) mais cela n'a rien donné.

    Ensuite Louis Guillaume a proposé de regarder du côté du DoubleBuffering (j'avais déjà jonglé avec les Suspend et ResumeLayout sans succès) et c'est bien ce dernier point qui a réglé le problème.

    L'UC a donc le booléen DoubleBuffered à True et adieu les problèmes de clignotement.

    Merci beaucoup à vous tous et à bientôt pour de nouvelles questions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide pour créer un effet de clignotement
    Par Halarp27 dans le forum SDL
    Réponses: 10
    Dernier message: 15/06/2013, 18h26
  2. Effet de clignotement
    Par despeludo dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 09/07/2009, 14h36
  3. Effet rollover clignotant sous FF
    Par boettez dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/09/2008, 12h30
  4. Effets indésirables avec java.awt.Robot
    Par LGnord dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/08/2008, 14h34
  5. Réponses: 1
    Dernier message: 21/02/2008, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo