あたもこトップ

[VB/C#] コンボボックスにアイテムを追加する

このエントリーをはてなブックマークに追加

コンボボックスに項目を追加するサンプルコードを示す。

ポイントは、追加するアイテムはオブジェクト(object)であり、文字列だけではない点である。 もちろん文字列をそのまま追加することも可能であるが、選択時に取得したい項目が複数あるような場合などでは 使い勝手が悪い。

以下のサンプルでは、任意のオブジェクトをコンボボックスに追加し、表示されるテキストも ToString メソッドをオーバーライドして編集している。

サンプルコード

[VB]
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles MyBase.Load

        ' 追加するオブジェクトを作成
        Dim item1 As New CmbItem("value1", "text1")
        Dim item2 As New CmbItem("value2", "text2")

        ' コンボボックスにアイテムを追加
        Me.ComboBox1.Items.Add(item1)
        Me.ComboBox1.Items.Add(item2)

        ' 一つ目のアイテムを選択状態にする
        Me.ComboBox1.SelectedIndex = 0

        ' 選択されているオブジェクトを取得
        Dim selectedItem As CmbItem = DirectCast(Me.ComboBox1.SelectedItem, CmbItem)

        MessageBox.Show(selectedItem.Value) ' value1
        MessageBox.Show(selectedItem.Text)  ' text1

    End Sub

    ''' <summary>
    ''' コンボボックスに追加するオブジェクト
    ''' </summary>
    Public Class CmbItem

        Public Text As String
        Public Value As String

        Public Sub New(ByVal value As String, ByVal text As String)
            Me.Text = text
            Me.Value = value
        End Sub

        ''' <summary>
        ''' Object.ToString メソッドをオーバーライドし
        ''' コンボボックスに表示されるテキストを設定する
        ''' </summary>
        Public Overrides Function ToString() As String
            Return Me.Text + "!!"
        End Function

    End Class

End Class
[C#]
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // 追加するオブジェクトを作成
        CmbItem item1 = new CmbItem("value1", "text1");
        CmbItem item2 = new CmbItem("value2", "text2");

        // コンボボックスにアイテムを追加
        this.comboBox1.Items.Add(item1);
        this.comboBox1.Items.Add(item2);

        // 一つ目のアイテムを選択状態にする
        this.comboBox1.SelectedIndex = 0;

        // 選択されているオブジェクトを取得
        CmbItem selectedItem = (CmbItem)this.comboBox1.SelectedItem;

        MessageBox.Show(selectedItem.Value); // value1
        MessageBox.Show(selectedItem.Text);  // text1
    }

    /// <summary>
    /// コンボボックスに追加するオブジェクト
    /// </summary>
    public class CmbItem
    {
        public string Text { get; set; }
        public string Value { get; set; }

        public CmbItem(string value, string text)
        {
            this.Text = text;
            this.Value = value;
        }

        /// <summary>
        /// Object.ToString メソッドをオーバーライドし
        /// コンボボックスに表示されるテキストを設定する
        /// </summary>
        public override string ToString()
        {
            return this.Text + "!!";
        }
    }
}

注意

C# のサンプルコードでは自動実装プロパティを使用しているため、C#2008 以降の環境が必要となる。

関連

プログラミング
ウィンドウズ
データベース
サーバー構築
ソフトウェア