Category / Section
How to avoid the layoutmanagers leave blank space at the top of the WinForms FlowLayout control?
1 min read
Handle Resize event
By default, the layout managers layout controls within the client rectangle, but when scrollbars are turned on in the container control, you need to make the layout mangers layout within the DisplayRectangle of the container control, so you have to do this additional step:
C#
// Listen to the container control’s Resize event. private void panel1_Resize(object sender, System.EventArgs e) { // By default, the layout bounds are the container’s ClientRectangle, // but here we will use the display rectangle: this.flowLayout1.CustomLayoutBounds = this.panel1.DisplayRectangle; } // If your container control will dynamically add/remove child controls, then also listen to this event in the layout manager: private void flowLayout1_ProvideLayoutInformation(object sender, Syncfusion.Windows.Forms.Tools.ProvideLayoutInformationEventArgs e) { this.flowLayout1.CustomLayoutBounds = this.panel1.DisplayRectangle; }
VB
' Listen to the container control’s Resize event. Private Sub panel1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) 'By default, the layout bounds are the container’s ClientRectangle, ’ but here we will use the display rectangle: Me.flowLayout1.CustomLayoutBounds = Me.panel1.DisplayRectangle End Sub ' If your container control will dynamically add/remove child controls, then also listen to this event in the layout manager: Private Sub flowLayout1_ProvideLayoutInformation(ByVal sender As Object, ByVal e As Syncfusion.Windows.Forms.Tools.ProvideLayoutInformationEventArgs) Me.flowLayout1.CustomLayoutBounds = Me.panel1.DisplayRectangle End Sub
The layout that happens after this Resize event will use the Display rectangle instead.