列挙型(Enum)をコンボボックスにバインドする

カテゴリ: VB.NET
投稿日時:2008/12/16 10:36:13
列挙型をコンボボックスにバインドするには、BindingSourceクラスを使い、以下のようにします。

Public Class Form2
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '列挙型をコンボボックスにバインド
        With Me.ComboBox1

            Dim bs As New BindingSource

            'データソースを自作のComboDataに指定する
            bs.DataSource = GetType(ComboData)

            '列挙型をループしてBindingSourceクラスに追加する
            For Each s As String In [Enum].GetNames(GetType(DayOfWeek))
                Dim obj As DayOfWeek = CType([Enum].Parse(GetType(DayOfWeek), s), DayOfWeek)
                Dim data As New ComboData(CInt(obj), s)
                bs.Add(data)
            Next

            'バインドする
            .ValueMember = "Value"
            .DisplayMember = "Display"
            .DataSource = bs
        End With
    End Sub
End Class

''' <summary>
''' コンボボックスにバインドするデータ
''' </summary>
''' <remarks></remarks>
Public Class ComboData

    Private mintValue As Integer
    Public Property Value() As Integer
        Get
            Return mintValue
        End Get
        Set(ByVal value As Integer)
            mintValue = value
        End Set
    End Property

    Private mstrDisplay As String
    Public Property Display() As String
        Get
            Return mstrDisplay
        End Get
        Set(ByVal value As String)
            mstrDisplay = value
        End Set
    End Property

    Sub New(ByVal vintValue As Integer, ByVal vstrDisplay As String)
        Value = vintValue
        Display = vstrDisplay
    End Sub
End Class
このエントリーをはてなブックマークに追加


スポンサード リンク