独自に作成したデータソースを用いてListBoxに要素を表示する

データソースを独自に作成してListBoxに割り当てて要素を表示するコードを紹介します。

UI

下図のUIを作成します。フォームにListBox, Button, TextBoxを1つずつ配置します。
独自に作成したデータソースを用いてListBoxに要素を表示する:画像1

コード

FormListBoxObject.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ListBoxDemo
{
  public partial class FormListBoxObject : Form
  {
    List<MyItem> ListBoxItem = new List<MyItem>();

    public FormListBoxObject()
    {
      InitializeComponent();

      MyItem mi;
      mi = new MyItem("シロクマ", "北極");
      ListBoxItem.Add(mi);
      mi = new MyItem("ペンギン", "南極");
      ListBoxItem.Add(mi);
      mi = new MyItem("ラクダ", "砂漠");
      ListBoxItem.Add(mi);
      mi = new MyItem("カンガルー", "オーストラリア");
      ListBoxItem.Add(mi);


      listBox1.DisplayMember = "Name";
      listBox1.ValueMember = "Place";
      listBox1.DataSource = ListBoxItem;
    }

    private void button1_Click(object sender, EventArgs e)
    {
      textBox1.Text = string.Format("{0:s} , {1:s}",
        ((MyItem)listBox1.SelectedItem).Name, listBox1.SelectedValue.ToString());
    }
  }
}

解説

  List<MyItem> ListBoxItem = new List<MyItem>();

上記がListBoxのデータソースに指定する"List<MyItem>"オブジェクトです。

  MyItem mi;
  mi = new MyItem("シロクマ", "北極");
  ListBoxItem.Add(mi);
  mi = new MyItem("ペンギン", "南極");
  ListBoxItem.Add(mi);
  mi = new MyItem("ラクダ", "砂漠");
  ListBoxItem.Add(mi);
  mi = new MyItem("カンガルー", "オーストラリア");
  ListBoxItem.Add(mi);
フォームのコンストラクタ中の上記コードにより"List<MyItem>"オブジェクトに要素を追加します。

  listBox1.DisplayMember = "Name";
  listBox1.ValueMember = "Place";
  listBox1.DataSource = ListBoxItem;

上記コードにより作成した"List<MyItem>"オブジェクトをListBoxのDataSourceプロパティに設定します。DataSourceプロパティへオブジェクトを設定する前に、DisplayMember, ValueMemberを設定します。DisplayMemberはListBoxの要素が画面に表示される際の文字列のキーを与えます。ListBoxの要素MyItemはName,Placeのプロパティを持つためDisplayMemberに"Name"を指定することで、MyItemの"Name"プロパティの値をListBoxの要素として画面へ表示できます。また、ValueMemberを"Place"に指定することで"ListBox.SelectedValue"により選択されている要素の値としてMyItemオブジェクトの"Place"の値を取得できます。また、SlectedItemプロパティには選択されている要素のMyItemオブジェクトが指定されます。

上記のコードは選択した要素のキャプションの"Name"とSelectedValueに設定された"Place"の値をテキストボックスに表示します。

MyItem.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ListBoxDemo
{
  class MyItem
  {
    string mName;
    string mPlace;

    public MyItem()
    {
    }
    public MyItem(string name, string place)
    {
      mName = name;
      mPlace = place;
    }

    public string Name
    {
      set
      {
        mName = value;
      }
      get
      {
        return mName;
      }
    }

    public string Place
    {
      set
      {
        mPlace = value;
      }
      get
      {
        return mPlace;
      }
    }
  }
}

解説

ListBox設定するデータソースの要素クラスです。"Name"と"Place"のstring型のプロパティを持つクラスです。コンストラクタに引数をとることができ、newした際にName,Placeに値を設定できる動作になっています。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
独自に作成したデータソースを用いてListBoxに要素を表示する:画像2

左側のListBoxの要素をクリックして選択します。
独自に作成したデータソースを用いてListBoxに要素を表示する:画像3

選択後ボタンを押します。選択された要素のテキストと、要素の値がTextBoxに表示されます。
独自に作成したデータソースを用いてListBoxに要素を表示する:画像4

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2013-04-26
Copyright © 1995–2025 iPentec all rights reserverd.