Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

UserControl autoscroll & mousewheel

2 réponses
Avatar
Vincent Poyo
Bonjour,

je développe un UserControl qui est une sorte de TreeView. ce composant
à la propriété AutoScroll à true.
ceci marche très bien :) par contre ca ne gère pas le scrolling de la souris
(mouseWheel). j'ai beau cherché je ne vois pas ce qu'il faut mettre
dans le mouseWheel event pour que ca gère le scrolling :-/ car à priori on a
pas accès a la scrollbar

si quelqu'un à une idée merci

2 réponses

Avatar
Vincent Poyo
la je viens de repositionner les controls par rapport au delta dans le
mouseWheel
ca marche très bien côté scrolling. par contre la scrollbar a un
comportement trop bizare.
en fait les valeurs min et max du scroll bar se bases sur les top/height des
controls
du coup soit j'ai scope trop petit et j'arrive plus a scroller à la main
tout mon treeview
soit il est trop grand avec une grande zone blanche avant le premier control

"Vincent Poyo" a écrit dans le message de news:

Bonjour,

je développe un UserControl qui est une sorte de TreeView. ce composant
à la propriété AutoScroll à true.
ceci marche très bien :) par contre ca ne gère pas le scrolling de la
souris (mouseWheel). j'ai beau cherché je ne vois pas ce qu'il faut mettre
dans le mouseWheel event pour que ca gère le scrolling :-/ car à priori on
a pas accès a la scrollbar

si quelqu'un à une idée merci



Avatar
Vincent Poyo
j'ai essayer un nouveau truc mais il reste un petit bug

voici le code :
Private Sub GroupList_MouseWheel(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseWheel

'si pas de scrollbar on sort
If Not VScroll Then Exit Sub

'
' la méthode redraw ne fait que repositionner la propriété
' top de chaque control par rapport au top du premier
'

'permet de pas avoir de blanc entre le début du usercontrol
'et le premier control

If e.Delta > 0 Then
If Me.Controls(0).Top + e.Delta > 0 Then

Me.Controls(0).Top = 0
Redraw()
Exit Sub

End If
End If

'permet de pas avoir de blanc entre le début du usercontrol
' et le dernier control

If e.Delta < 0 Then
If Me.Controls(Me.Controls.Count - 1).Top + _
Me.Controls(Me.Controls.Count - 1).Height + e.Delta < Me.Height
Then

Me.Controls(0).Top += Me.Height -
(Me.Controls(Me.Controls.Count - 1).Top + _
Me.Controls(Me.Controls.Count - 1).Height)

Redraw()
Exit Sub

End If
End If

'cas normal

Me.Controls(0).Top += e.Delta
Redraw()

End Sub



avec ceci tout marche "presque bien". Si je scroll avec la scrollbar ca
marche, si je scroll avec la souris aussi.
par contre quand je scroll à la sourie, ca influe sur la position min de la
scrollbar. du coup si je descend à la souris
et que je remonte avec la scrollbar je n'arrive plus à atteindre le début de
ma liste


"Vincent Poyo" a écrit dans le message de news:

la je viens de repositionner les controls par rapport au delta dans le
mouseWheel
ca marche très bien côté scrolling. par contre la scrollbar a un
comportement trop bizare.
en fait les valeurs min et max du scroll bar se bases sur les top/height
des controls
du coup soit j'ai scope trop petit et j'arrive plus a scroller à la main
tout mon treeview
soit il est trop grand avec une grande zone blanche avant le premier
control

"Vincent Poyo" a écrit dans le message de news:

Bonjour,

je développe un UserControl qui est une sorte de TreeView. ce
composant à la propriété AutoScroll à true.
ceci marche très bien :) par contre ca ne gère pas le scrolling de la
souris (mouseWheel). j'ai beau cherché je ne vois pas ce qu'il faut
mettre
dans le mouseWheel event pour que ca gère le scrolling :-/ car à priori
on a pas accès a la scrollbar

si quelqu'un à une idée merci