devxlogo

Setting the width of the last column of a ListView when the control is resized

Setting the width of the last column of a ListView when the control is resized

When you resize a ListView control (this happens automatically if the ListView is docked to the form, and the user resizes the form), it’s nice to have the last column to be resized accordingly to cover the available space. To do this, handle the ListView’s Resize control (in .NET any control has a Resize event, not just the Form as in VB6) and calculate the width of the last column by subtracting the width of the other columns from the ListView’s total width. If you have only two columns, the required code would be similar to the following:

Private Sub ListView1_Resize(ByVal sender As Object, _    ByVal e As System.EventArgs) Handles ListView1.Resize    ListViewHeader2.Width = ListView1.Width - ListViewHeader2.Width - 27End Sub

This code works always fine when the control is enlarged, but sometimes when the control is shrunk the ListView displays the horizontal scrollbar, even if the last column was correctly resized and the scrollbar is not necessary. To solve this issue, just wrap the code that sets the new width of the column between the ListView’s BeginUpdate and EndUpdate method calls, as shown below:

Private Sub ListView1_Resize(ByVal sender As Object, _    ByVal e As System.EventArgs) Handles ListView1.Resize    ListView1.BeginUpdate()    ListViewHeader2.Width = ListView1.Width - ListViewHeader2.Width - 27    ListView1.EndUpdate()End Sub

devx-admin

Share the Post: