Voilà je fais un éditeur de formulaire spécifique à mon boulot.
Cet editeur instancie des forms "odocument" contenant un panel.
Dans ce panel j'instance un object "oformulaire" qui est en fait une classe hérité de "picturebox" + quelques propriété perso.
En gros c'est l'image du formulaire, rien de plus.
Dans ce formulaire j'instancie des object "ochamp" qui est en fait une classe hérité de "label" + quelques propriété perso.
En gros c'est juste des rectangles.
L'utilisateur à la possibilité de déplacer un selection de "ochamp" (clavier et souris), le soucis avec ça c'est que lors du déplacement, j'ai des traces (des fantômes) de l'ancienne position de ces champs.
J'ai essayer plusieurs trucs mais j'arrive pas à empêcher ces traces, donc je cherche des conseils, une solution...etc.
Peut être est ce mon approche qui est fausse, peut être que je ne dois pas faire des objects et les deplacer 1 par 1 tel que je le fait, je sais pas trop.
Voici le code de ma fonction de déplacement/agrandissement des "champs" :
En gros je boucle sur les object typé "champ" du picturebox et j'applique x,y,xh selon les parametres reçus, rien de bien compliqué.
Et voilà ce que ça donne si je bouge rapidement, ça refresh pas assez vite:
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 ' Deplacer selection ou si touche control : agrandir / reduire Protected Friend Sub SetMoveDD(_x As Integer, _y As Integer, _w As Integer, _h As Integer) If oToolSelected <> ETool.Deplacer Then Exit Sub For Each ChildCtrl As Champ In oDocument.oFormulaire.Controls If ChildCtrl.GetType.Name = "Champ" Then If ChildCtrl.Selected > 0 Then ChildCtrl.SuspendLayout() ChildCtrl.Left += _x ChildCtrl.Top += _y ChildCtrl.Width += _w ChildCtrl.Height += _h ChildCtrl.ResumeLayout() End If End If Next End Sub
Merci de vos lumières.
Partager