[vb.net]astuce accéléré le onresize

Description

Sous Vb.Net ce qui est bien est de pouvoir construire ses propres control. On peut aussi le faire en VB6.0, masi sous .Net c est extrêment facile

j'ai déjà poster une source qui montrait comment redimentionner un control et tout ses composants.

on doit utilise la méthode "Protected Overrides Sub OnResize(ByVal e As System.EventArgs)"

comme ca, quand on l'ajoute sur une form, le control se redimention automatiquement et position totu ses composant à la bonne place.

Donc le code est parfait ... non
le code est pratique ... ça oui

voici une petite amélioration qui permet d'augmenter la vitesse d'affichage et de calcul. Quand on met du code dans le OnResize, le code s'éxécute pendant la création du control. Qeu le code s'exécute quand on doit la grandeur au control, c'est correct, mais pas quand on le crée.

ce qui se produit, c'est que VB.Net crée un thread qui appel OnResize et en même temps le control fini de se créé .... Donc on se ramasse avec 2 processus qui travail en même temps. Donc en plus de charger la mémoire au complet, les 2 threads se ralentissent mutuellement.

Donc voici l'astuce. C'est de créé une variable boolean globale dans le control. par défaut on le met a true, mais dans les constructeur du control (les New), on change sa valeur pour false au début du constructeur et on le remet a true à la fin.

Ensuite, dans le OnResize, on entour tout le code avec un if. Si la variable est a true, alors on resize les control, sinon on fait rien, puisque de toute façon il y aura un resize plus tard.

Source / Exemple :


'Voici des bout de code qui montre l'astuce

Private resizeOk As Boolean = True

 Public Sub New(ByVal tableau() As Type.AjoutModSupp, ByVal table As String, ByVal condition As Type.AjoutModSuppDroit, ByVal form As principal, Optional ByVal where As String = "", Optional ByVal ordre() As String = Nothing, Optional ByVal tableComplexe As String = "")
        MyBase.New()
        resizeOk = False

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        rafraichir()
        resizeOk = True
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
        If resizeOk Then
 
        End If
    End Sub

Conclusion :


ça peut paraitre simple comme code, mais on compte une accélération d'environ 60%

j'avais testé avec une variable et je comptais les milisenconde entre al création avec et celle sans l'astuce. ça tournais toujours autour de 60%. Un peut normal, au lieu de faire le OnResize 2 fois, il le fait 1 fois et on perd 10% suppléentaire a cause que les 2 thread ce fond compétition lors de la création

la source est coché .Net, puisque c'est plus simple en .Net, sauf el code peut-être aussi adapter en VB6.0

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.