読者です 読者をやめる 読者になる 読者になる

おまけ。

Public Module ComboItemCodeTextHelper
    ' 指定したComboBoxに入っているComboItemCodeText型オブジェクトから指定したCodeを検索して見つかった最初のインデックスを返す
    ' 見つからなかったら-1を返す
    Public Function FindComboItem(ByVal aComboBox As ComboBox, _
                                  ByVal aCode As Integer) As Integer
        For i As Integer = 0 To aComboBox.Items.Count - 1
            If TypeOf aComboBox.Items(i) Is ComboItemCodeText Then
                If (Not DirectCast(aComboBox.Items(i), ComboItemCodeText).IsTopItem) AndAlso _
                        (aCode = DirectCast(aComboBox.Items(i), ComboItemCodeText).Code) Then
                    Return i
                End If
            End If
        Next
        Return -1
    End Function

    ' 指定したComboBoxに入っているComboItemCodeText型オブジェクトから指定した特殊最上段アイテムを検索して見つかった最初のインデックスを返す
    ' 見つからなかったら-1を返す
    Public Function FindComboItem(ByVal aComboBox As ComboBox, _
                                  ByVal aTopItem As emTopItemKind) As Integer
        For i As Integer = 0 To aComboBox.Items.Count - 1
            If TypeOf aComboBox.Items(i) Is ComboItemCodeText Then
                If DirectCast(aComboBox.Items(i), ComboItemCodeText).IsTopItem AndAlso _
                        (aTopItem = DirectCast(aComboBox.Items(i), ComboItemCodeText).TopItem) Then
                    Return i
                End If
            End If
        Next
        Return -1
    End Function

    ' 指定したコンボボックスからaCodeを検索し、見つかったら選択状態にする
    Public Function SelectComboItem(ByVal aComboBox As ComboBox, _
                                    ByVal aCode As Integer, _
                                    Optional ByVal aSelectAtNoExists As Boolean = False, _
                                    Optional ByVal aNoExistsItemIndex As Integer = -1) As Boolean
        Dim iIndex As Integer = FindComboItem(aComboBox, aCode)
        If iIndex >= 0 Then
            aComboBox.SelectedIndex = iIndex
            Return True
        Else
            If aSelectAtNoExists Then
                aComboBox.SelectedIndex = aNoExistsItemIndex
            End If
            Return False
        End If
    End Function

    ' 指定したコンボボックスからaTopItemを検索し、見つかったら選択状態にする
    Public Function SelectComboItem(ByVal aComboBox As ComboBox, _
                                    ByVal aTopItem As emTopItemKind, _
                                    Optional ByVal aSelectAtNoExists As Boolean = False, _
                                    Optional ByVal aNoExistsItemIndex As Integer = -1) As Boolean
        Dim iIndex As Integer = FindComboItem(aComboBox, aTopItem)
        If iIndex >= 0 Then
            aComboBox.SelectedIndex = iIndex
            Return True
        Else
            If aSelectAtNoExists Then
                aComboBox.SelectedIndex = aNoExistsItemIndex
            End If
            Return False
        End If
    End Function

    ' コンボボックスの最上段アイテムを選択状態にする
    Public Function ResetCombobox(ByVal aCombobox As ComboBox) As Boolean
        If aCombobox.Items.Count > 0 Then
            aCombobox.SelectedIndex = 0
        End If
        Return True
    End Function
End Module