Lier ScrollBars DatagridVew et TableLayoutPanel [Résolu]

Messages postés
14
Date d'inscription
mardi 26 octobre 2010
Dernière intervention
7 juin 2013
- - Dernière réponse : Squal0
Messages postés
14
Date d'inscription
mardi 26 octobre 2010
Dernière intervention
7 juin 2013
- 9 août 2012 à 02:34
Bonjour à tous,

J'utilise actuellement VS2010 et j'ai dans ma Form 1 DatagridView et un TableLayoutPanel.
Les 2 ont la ScrollBar d'activée mais j'aimerais que si je descend dans l'un ça descende aussi dans l'autre et inversement.

J'ai réussi à trouver un exemple pour lier les ScrollBars de 2 DatagridView qui ressemble à ceci :

Private Sub dgv1_Scroll(sender As Object, e As System.Windows.Forms.ScrollEventArgs) Handles dgv1.Scroll
    
        if (dgv2.FirstDisplayedScrollingRowIndex <> dgv1.FirstDisplayedScrollingRowIndex)
            dgv2.FirstDisplayedScrollingRowIndex = dgv1.FirstDisplayedScrollingRowIndex
End Sub

Private Sub dgv2_Scroll(sender As Object, e As System.Windows.Forms.ScrollEventArgs) Handles dgv2.Scroll
    
        if (dgv1.FirstDisplayedScrollingRowIndex <> dgv2.FirstDisplayedScrollingRowIndex)
            dgv1.FirstDisplayedScrollingRowIndex = dgv2.FirstDisplayedScrollingRowIndex
End Sub
    

J'ai donc compris qu'il fallait utiliser "FirstDisplayedScrollingRowIndex" du coté du DatagridView mais je n'arrive pas à trouver ce qu'il faut utiliser du coté du TableLayoutPanel pour faire la comparaison.

J'ai essayé "TableLayoutPanel.VerticalScroll.Value" ou "TableLayoutPanel.AutoScrollPosition.Y" mais ça ne marche pas.

Je cherche donc l’équivalent de "FirstDisplayedScrollingRowIndex" pour un TableLayoutPanel, si quelqu'un a une idée ça m'aiderait énormément :)

Merci par avance pour vos réponse
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
14
Date d'inscription
mardi 26 octobre 2010
Dernière intervention
7 juin 2013
3
Merci
Bon ben je me réponds encore tout seul mais, des fois que ça puisse aider quelqu'un, j'ai réussi à trouver une manière toutes simple pour contourner ce problème :
- mettre un Panel (et pas un grpbox pke pas de scroll) dans la fomr et y poser le TLP + le DGV dedans
- activer l'autoscroll du Panel et désactiver celui du TLP + du DGV
Et hop ! juste 1 scrollbar pour tout et y'a pas de problème de synchro entre les 2

Merci Squal0 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Squal0
Messages postés
14
Date d'inscription
mardi 26 octobre 2010
Dernière intervention
7 juin 2013
0
Merci
Rectification après un petit nouveau test ... je me rapproche de but mais y'a encore d'la marge :)

j'ai maintenant comme code :
Private Sub TableLayoutPanelLbl_Scroll(sender As Object, e As System.Windows.Forms.ScrollEventArgs) Handles TableLayoutPanelLbl.Scroll
        If SaveUsersDataGridView.FirstDisplayedScrollingRowIndex <> TableLayoutPanelLbl.VerticalScroll.Value Then
            SaveUsersDataGridView.FirstDisplayedScrollingRowIndex = TableLayoutPanelLbl.VerticalScroll.Value
        End If
End Sub

Private Sub SaveUsersDataGridView_Scroll(sender As Object, e As System.Windows.Forms.ScrollEventArgs) Handles SaveUsersDataGridView.Scroll
        If TableLayoutPanelLbl.VerticalScroll.Value <> SaveUsersDataGridView.FirstDisplayedScrollingRowIndex Then
            TableLayoutPanelLbl.VerticalScroll.Value = SaveUsersDataGridView.FirstDisplayedScrollingRowIndex
        End If
End Sub

J'ai dû passer à coté tout à l'heure car maintenant le TableLayoutPanle et le DatagridView descendent tout les 2 mais le défilement est plus rapide dans le DatagridView que dans le TableLayoutPanel.
En regardant de plus près, j'ai vu que la dernière ligne du TableLayoutPanel ne fait pas la même hauteur que les autres (c'est peu être car dans la collection de ligne du TableLayoutPanel j'ai mis 2 ligne : la 1ere de 22px en absolue et la 2eme en autosize, y'a que comme ça que j'arrive à bien afficher toutes les lignes mise à part la dernière qui s’étale sur la place restante). Ce qui explique du coup pourquoi ça semble défiler moins vite vu qu'il y a plus de "distance" à faire défiler.

Si quelqu'un à une idée pour mon problème et n’hésitez pas à me demander si mon explication est confuse (c'est pas toujours facile d'expliquer son problème, quand on a le nez dedans tout parait clair )
Commenter la réponse de Squal0

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.