让CustomListView调整最后一列以适应宽度

时间:2015-06-17 08:34:20

标签: vb.net winforms listview

我在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

customlistview

0 个答案:

没有答案