OVH Cloud OVH Cloud

Modification d'un item d'un ListView

2 réponses
Avatar
Boris Sargos
Salut à tous,

j'ai constaté avec étonnement, que lorsque je modifie une des popriétés
d'un ListViewItem, tout le contrôle ListView est redessiné. Si bien que
lorsque je modifie plusieurs subitems assez rapidement (surtout leur
couleur d'arrière-plan), ça crée la pagaille, c'est lent et assez
désagréable.
J'ai constaté la même chose pour le DataGridView.

Dans le cas du DataGridView, j'ai pensé à surcharger l'évènement
OnCellStyleChanged pour ne redessiner que la cellule. J'aurais appellé
dans ce cas la fonction Invalidate(Rectangle) idoine, mais cela ne
fonctionne pas car je ne peux obtenir les coordonnées de la cellule à
redessiner.

Quelqu'un a une idée ?
Merci.

2 réponses

Avatar
Zoury
Salut Boris! :O)

Regarde du côté des méthodes SuspendLayout() et ResumeLayout().

--
Cordialement
Yanick
MVP pour Visual Basic
"Boris Sargos" a écrit dans le message de
news:41df16e1$0$8040$
Salut à tous,

j'ai constaté avec étonnement, que lorsque je modifie une des popriétés
d'un ListViewItem, tout le contrôle ListView est redessiné. Si bien que
lorsque je modifie plusieurs subitems assez rapidement (surtout leur
couleur d'arrière-plan), ça crée la pagaille, c'est lent et assez
désagréable.
J'ai constaté la même chose pour le DataGridView.

Dans le cas du DataGridView, j'ai pensé à surcharger l'évènement
OnCellStyleChanged pour ne redessiner que la cellule. J'aurais appellé
dans ce cas la fonction Invalidate(Rectangle) idoine, mais cela ne
fonctionne pas car je ne peux obtenir les coordonnées de la cellule à
redessiner.

Quelqu'un a une idée ?
Merci.


Avatar
MrChris
Ou bien listview.beginupdate et listview.endupdate...
(de mémoire...)

@+
MrChris

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news: %23$
Salut Boris! :O)

Regarde du côté des méthodes SuspendLayout() et ResumeLayout().

--
Cordialement
Yanick
MVP pour Visual Basic
"Boris Sargos" a écrit dans le message de
news:41df16e1$0$8040$
Salut à tous,

j'ai constaté avec étonnement, que lorsque je modifie une des popriétés
d'un ListViewItem, tout le contrôle ListView est redessiné. Si bien que
lorsque je modifie plusieurs subitems assez rapidement (surtout leur
couleur d'arrière-plan), ça crée la pagaille, c'est lent et assez
désagréable.
J'ai constaté la même chose pour le DataGridView.

Dans le cas du DataGridView, j'ai pensé à surcharger l'évènement
OnCellStyleChanged pour ne redessiner que la cellule. J'aurais appellé
dans ce cas la fonction Invalidate(Rectangle) idoine, mais cela ne
fonctionne pas car je ne peux obtenir les coordonnées de la cellule à
redessiner.

Quelqu'un a une idée ?
Merci.