DataGridView:最終列の幅をDGVの全体幅に合わせる

■以下の処理を読み出し時やColumnWidthChangedイベントにセット

 (*)最終列の幅を、DGV全体幅-(全列幅-最終列幅+スクロールバー幅+RowHeader幅)

 にすればよい。

Public Sub DataGridViewLastColumnWidthSetting(ByVal ctrl As DataGridView)
  Dim allWidth As Integer =
    ctrl.Columns.GetColumnsWidth(DataGridViewElementStates.Visible)
 
  Dim vScrollWidth As Integer = If(ctrl.Controls.OfType(Of VScrollBar)().First().Visible,       
    SystemInformation.VerticalScrollBarWidth, 0)

  Dim lastColmWidth As Integer = 
    ctrl.Columns.GetLastColumn(DataGridViewElementStates.Visible, Nothing).Width
  Dim rowSelectWidth As Integer = If(ctrl.RowHeadersVisible, ctrl.RowHeadersWidth, 0)

  If allWidth <= ctrl.Width - SystemInformation.VerticalScrollBarWidth Then
    ctrl.Columns.GetLastColumn(DataGridViewElementStates.Visible, Nothing).Width =
    ctrl.Width - (allWidth - lastColmWidth + vScrollWidth + rowSelectWidth)
  End If
End Sub