Squal0
Messages postés14Date d'inscriptionmardi 26 octobre 2010StatutMembreDernière intervention 7 juin 2013
-
8 août 2012 à 00:27
Squal0
Messages postés14Date d'inscriptionmardi 26 octobre 2010StatutMembreDerniè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 :)
Squal0
Messages postés14Date d'inscriptionmardi 26 octobre 2010StatutMembreDernière intervention 7 juin 2013 9 août 2012 à 02:34
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
Squal0
Messages postés14Date d'inscriptionmardi 26 octobre 2010StatutMembreDernière intervention 7 juin 2013 8 août 2012 à 01:52
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 )