Imports Infragistics.Win
Imports Infragistics.Win.UltraWinListView
Private Sub ultraListView1_ColumnResizing(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinListView.ColumnResizingEventArgs) Handles ultraListView1.ColumnResizing
' If the column about to be resized is the MainColumn, cancel
' the event to prevent the column from being resized.
If (e.Column.GetType() Is GetType(UltraListViewMainColumn)) Then e.Cancel = True
End Sub
Private Sub ultraListView1_ColumnResized(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinListView.ColumnResizedEventArgs) Handles ultraListView1.ColumnResized
Dim listView As UltraListView = CType(sender, UltraListView)
' Get a rectangle which describes the client area
' of the control, so we can determine the width
' minus the width of the vertical scrollbar, if
' one is present.
Dim displayRect As Rectangle = listView.DisplayRectangle
Dim clientWidth As Integer = displayRect.Width
' Subtract out the width of the MainColumn
Dim mainColumnWidth As Integer = IIf(listView.MainColumn.Width > 0, listView.MainColumn.Width, 200)
clientWidth -= mainColumnWidth
' Iterate the SubItemColumns collection to get the number of
' visible columns.
Dim visibleByDefault As Boolean = listView.ViewSettingsDetails.SubItemColumnsVisibleByDefault
Dim visibleColumnsCount As Integer = 0
Dim subItemColumn As UltraListViewSubItemColumn
For Each subItemColumn In listView.SubItemColumns
If (subItemColumn.VisibleInDetailsView = DefaultableBoolean.True Or _
(visibleByDefault AndAlso subItemColumn.VisibleInDetailsView = DefaultableBoolean.Default)) Then
visibleColumnsCount += 1
End If
Next
' Iterate the SubItemColumns collection and set the width
For Each subItemColumn In listView.SubItemColumns
subItemColumn.Width = Math.Floor((clientWidth / visibleColumnsCount))
Next
End Sub