コンボボックスの中身が全部おさまる最適な幅を取得する

結構需要あるんじゃないかと思われる関数です。DropDownWidthにセットしてね。

    ''' <summary>
    ''' 対象のコンボボックスアイテム内で最長の文字列のWidthを取得する
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Friend Function gfGetCboItemMaxWidth(ByVal avCbo As ComboBox, Optional ByVal avScrollBarMargin As Integer = 20) As Integer
        Dim rvRep As Integer = 0

        Try
            With avCbo
                If .Items.Count > 0 Then
                    For I As Integer = 0 To .Items.Count - 1
                        '最長の文字列幅をループして取得
                        rvRep = Math.Max(rvRep, TextRenderer.MeasureText(.Items(I).ToString, .Font).Width)
                    Next
                    'スクロールバーの横幅を加味
                    rvRep += avScrollBarMargin
                End If
            End With

        Catch ex As Exception
            Throw ex
        Finally
            gfGetCboItemMaxWidth = rvRep
        End Try
    End Function

自作したけど実はプロパティ一発で取れたりして。