@@ -26,6 +26,7 @@ public RCheevosAchievementListForm()
2626 _cheevoForms = Array . Empty < RCheevosAchievementForm > ( ) ;
2727 using var temp = new RCheevosAchievementForm ( null ) ;
2828 _controlHeight = temp . Height + temp . Margin . Bottom + temp . Margin . Top ;
29+ flowLayoutPanel1 . BoundScrollBar = vScrollBar1 ;
2930 }
3031
3132 private void DisposeCheevoForms ( )
@@ -92,19 +93,13 @@ private void UpdateForms()
9293
9394 private void vScrollBar1_ValueChanged ( object sender , EventArgs e ) => UpdateForms ( ) ;
9495
95- public void flowLayoutPanel1_MouseWheel ( object sender , MouseEventArgs e )
96- {
97- vScrollBar1 . Value = ( vScrollBar1 . Value - e . Delta ) . Clamp ( vScrollBar1 . Minimum , vScrollBar1 . Maximum - vScrollBar1 . LargeChange + 1 ) ;
98- }
99-
10096 private int DisplayedItems ( )
10197 {
10298 return Math . Min ( ( int ) Math . Ceiling ( ( double ) flowLayoutPanel1 . Height / _controlHeight ) + 1 , _cheevos . Length ) ;
10399 }
104100
105101 private void RCheevosAchievementListForm_SizeChanged ( object sender , EventArgs e )
106102 {
107- vScrollBar1 . LargeChange = vScrollBar1 . Size . Height ;
108103 if ( flowLayoutPanel1 . Controls . Count != DisplayedItems ( ) )
109104 {
110105 flowLayoutPanel1 . Controls . Clear ( ) ;
@@ -123,9 +118,28 @@ private void RCheevosAchievementListForm_SizeChanged(object sender, EventArgs e)
123118
124119 public class VirtualizedFlowLayoutPanel : FlowLayoutPanel
125120 {
121+ private VScrollBar _boundScrollBar ;
122+ public VScrollBar BoundScrollBar
123+ {
124+ get => _boundScrollBar ;
125+ set
126+ {
127+ _boundScrollBar = value ;
128+ _boundScrollBar . SmallChange = 5 ;
129+ _boundScrollBar . LargeChange = this . Height ;
130+ }
131+ }
132+
133+ protected override void OnSizeChanged ( EventArgs e )
134+ {
135+ if ( _boundScrollBar is not null )
136+ _boundScrollBar . LargeChange = this . Height ;
137+ base . OnSizeChanged ( e ) ;
138+ }
139+
126140 protected override void OnMouseWheel ( MouseEventArgs e )
127141 {
128- ( Parent as RCheevosAchievementListForm ) ? . flowLayoutPanel1_MouseWheel ( this , e ) ;
142+ BoundScrollBar . Value = ( BoundScrollBar . Value - e . Delta ) . Clamp ( BoundScrollBar . Minimum , BoundScrollBar . Maximum - BoundScrollBar . LargeChange + 1 ) ;
129143 }
130144 }
131145}
0 commit comments