目次

ListBoxで複数の要素を選択できるようにし、選択されている要素を取得する - C#

Windows FormアプリケーションのListBoxで複数の要素を選択できるようにします。

UI

下図のUIを作成します。ListBox,TextBox,Buttonを1つ配置します。


ListBoxで複数の要素が選択できるようにします。ListViewコントロールをクリックして選択し、プロパティウィンドウの"SelectionMode"プロパティを"MultiSimple"に設定します。

コード

以下のコードを記述します。
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 FormListBoxMultiSelect : Form
  {
    public FormListBoxMultiSelect()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      for (int i = 0; i < listBox1.SelectedItems.Count; i++) {
        textBox1.Text += listBox1.SelectedItems[i].ToString() + "\r\n";
      }
    }

    private void FormListBoxMultiSelect_Load(object sender, EventArgs e)
    {
      listBox1.Items.Add("Item1");
      listBox1.Items.Add("Item2");
      listBox1.Items.Add("Item3");
      listBox1.Items.Add("Item4");
      listBox1.Items.Add("Item5");
      listBox1.Items.Add("Item6");
      listBox1.Items.Add("Item7");
      listBox1.Items.Add("Item8");
      listBox1.Items.Add("Item9");
      listBox1.Items.Add("Item10");
    }
  }
}

解説

FormListBoxMultiSelect_Loadメソッド内はListBoxに要素を追加するコードです。

private void button1_Click(object sender, EventArgs e)
{
  for (int i = 0; i < listBox1.SelectedItems.Count; i++) {
    textBox1.Text += listBox1.SelectedItems[i].ToString() + "\r\n";
  }
}
上記のButton1のClickイベントがListBoxで選択した要素を取得する処理です。

  for (int i = 0; i < listBox1.SelectedItems.Count; i++) {
    textBox1.Text += listBox1.SelectedItems[i].ToString() + "\r\n";
  }
上記のループで選択された要素を取得します。選択された要素はListBox.SelctedItems[i]に格納されています。複数選択されている場合はSelectedItems.Countプロパティで選択されている要素の個数を取得し、ListBox.SelctedItems[i]の配列添え字の値を増やしながら要素を順に取り出します。上記のコードでは取得した要素のキャプションをテキストボックスに表示しています。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


ListBoxの要素をクリックして選択します。


要素の選択後、Getボタンを押します。ListBoxで選択された要素がTextBoxに表示されます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2017-09-11
作成日: 2013-04-26
iPentec all rights reserverd.