我在WinForms中有一个自定义列表视图控件,它应用了一些自定义样式。这很好用,但是当用户最大化屏幕(列设置为固定宽度)并且设置了ColumnHeaderAutoResizeStyle.None时,我有一部分控件未被覆盖。我想让最后一栏自动填补空白。
要在自定义控件内部实现此功能,我已将以下代码添加到ListView.SizeChanged事件中。
Private Sub CustomListView_Resized(sender As Object, e As EventArgs) Handles Me.SizeChanged
Try
If (Not _isResizing) Then
_isResizing = True
Dim myListView As customListView = DirectCast(sender, customListView)
' Work out current column widths
Dim totalColumWidthInPx As Integer = 0
For i = 1 To Columns.Count - 1
totalColumWidthInPx += Me.Columns(i).Width
Next
' Increment the final column by the difference in width to make up the gap
Me.Columns.Item(Columns.Count - 1).Width += (myListView.ClientRectangle.Width - totalColumWidthInPx)
End If
Finally
_isResizing = False
End Try
End Sub
这总是给我不一致的结果,列宽增加到很多并添加滚动条如下。
一点点调试信息。
控制:lvAppointments,Width(px):701,客户端矩形宽度(px): 697,所有列宽:648,差异:49,最后一列:234,最后一列+ 差异:283