選択リストがあり、その中からアイテムを選択するリストボックスの使い方のサンプルです。
リストボックスの見た目はこんな感じです。
リストボックスを扱う為の設定と取得は
・選択リストの設定
・選択アイテムの取得
・空行の追加(未選択行)
・アイテムの初期選択
があります。
それと、選択リストの元とデータで4パターンサンプルを作成しました。
①単純に選択文字列を追加する
サンプルの内容
選択リストの元となるデータで4パターンのサンプルを作成しました。
①リストボックスに文字列を追加するパターン
単純にリストボックスに文字列を追加します。
②リストボックスに文字列の配列を追加するパターン
配列に設定された文字列を追加します。
③リストボックスにデータテーブルを作成して追加するパターン
データテーブルに表示名とコードを設定し、それをリストボックスに追加します。
選択値はコードで取得します。
④リストボックスにDictionaryを元に作成したデータテーブルを追加するパターン
「③」と基本的には同じですが、Dictionaryからデータテーブルを作成します。
作成したデータテーブルをリストボックスに追加します。
選択値はコードで取得します。
「選択しているものを表示する」をクリックすると選択値がそれぞれの横にある
テキストボックスに表示されます。
使用部品
No | 項目名 | Text | name | 部品 |
1 | ①(見出し) | ①リストボックスに文字列を追加する | label1 | Label |
2 | ①(選択欄) | 空 | listBox1 | ListBox |
3 | ①(表示欄) | 空 | textBox1 | TextBox |
4 | ②(見出し) | ②リストボックスに文字列の配列を追加する | label2 | Label |
5 | ②(選択欄) | 空 | listBox2 | ListBox |
6 | ②(表示欄) | 空 | textBox2 | TextBox |
7 | ③(見出し) | ③リストボックスにデータテーブルを 作成して追加する | label3 | Label |
8 | ③(選択欄) | 空 | listBox3 | ListBox |
9 | ③(表示欄) | 空 | textBox3 | TextBox |
10 | ④(見出し) | ④リストボックスにDictionaryを元に 作成したデータテーブルを追加する | label4 | Label |
11 | ④(選択欄) | 空 | listBox4 | ListBox |
12 | ④(表示欄) | 空 | textBox4 | TextBox |
13 | 表示ボタン | 選択しているものを表示する | button1 | Button |
プログラミング
言語:C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp21
{
public partial class Form2 : Form
{
/// <summary>
/// プレイヤー
/// </summary>
Dictionary<string, string> DicPlayer = new Dictionary<string, string>()
{
{"01", "錦織圭"},
{"02", "ロジャー・フェデラー"},
{"03", "ノバク・ジョコビッチ"},
{"04", "ラファエル・ナダル"},
{"05", "大坂 なおみ"},
{"06", "シモナ ハレプ"}
};
public Form2()
{
InitializeComponent();
}
/// <summary>
/// 画面起動時処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form2_Load(object sender, EventArgs e)
{
// ******************************************************************
// ①リストボックスに文字列を追加する
// ******************************************************************
listBox1.Items.Add("");
listBox1.Items.Add("錦織圭");
listBox1.Items.Add("ロジャー・フェデラー");
listBox1.Items.Add("ノバク・ジョコビッチ");
listBox1.Items.Add("ラファエル・ナダル");
listBox1.Items.Add("大坂 なおみ");
listBox1.Items.Add("シモナ ハレプ");
// 選択状態にする
listBox1.Text="ロジャー・フェデラー";
// ******************************************************************
// ②リストボックスに文字列の配列を追加する
// ******************************************************************
// 配列に文字列を設定する
String[] Items = {
"","錦織圭", "ロジャー・フェデラー", "ノバク・ジョコビッチ",
"ラファエル・ナダル","大坂 なおみ", "シモナ ハレプ"
};
// リストボックスに配列を追加する
listBox2.Items.AddRange(Items);
// 選択状態にする
listBox2.Text = "ロジャー・フェデラー";
// ******************************************************************
// ③リストボックスにデータテーブルを作成して追加する
// ******************************************************************
// データテーブルのインスタンスを作成する
DataTable dt1 = new DataTable();
// 配列に列名を設定する
String[] Items2 = { "id", "name" };
// データテーブルに列(配列)を追加する
dt1.Columns.AddRange(Items2.Select(n => new DataColumn(n)).ToArray());
// データテーブルに行を追加する
dt1.Rows.Add("01", "錦織圭");
dt1.Rows.Add("02", "ロジャー・フェデラー");
dt1.Rows.Add("03", "ノバク・ジョコビッチ");
dt1.Rows.Add("04", "ラファエル・ナダル");
dt1.Rows.Add("05", "大坂 なおみ");
dt1.Rows.Add("06", "シモナ ハレプ");
// リストボックスにデータテーブルを追加する
listBox3.DataSource = dt1;
// nameを表示項目に設定する
listBox3.DisplayMember = "name";
// idを値に設定する
listBox3.ValueMember = "id";
// 空行をリストの先頭に追加する
dt1.Rows.InsertAt(dt1.NewRow(), 0);
// 選択状態にする
listBox3.SelectedValue = "02";
// ******************************************************************
// ④リストボックスにDictionaryを元に作成したデータテーブルを追加する
// ******************************************************************
// データテーブルのインスタンスを作成する
DataTable dt2 = new DataTable("testTable");
// 配列に列名を設定する
String[] Items3 = { "id", "name" };
// データテーブルに列(配列)を追加する
dt2.Columns.AddRange(Items3.Select(n => new DataColumn(n)).ToArray());
// データテーブルに行を追加する(Dictionary)
foreach (KeyValuePair<string, string> p in DicPlayer)
{
dt2.Rows.Add(p.Key, p.Value);
}
// リストボックスにデータテーブルを追加する
listBox4.DataSource = dt2;
// nameを表示項目に設定する
listBox4.DisplayMember = "name";
// idを値に設定する
listBox4.ValueMember = "id";
// 空行をリストの先頭に追加する
dt2.Rows.InsertAt(dt2.NewRow(), 0);
// 選択状態にする
listBox4.SelectedValue = "02";
}
/// <summary>
/// 選択しているものを表示する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
// ①選択されているITEMをテキストボックスに表示する
if (listBox1.SelectedItem != null)
{
textBox1.Text = listBox1.SelectedItem.ToString();
}
// ②選択されているITEMをテキストボックスに表示する
if (listBox2.SelectedItem != null)
{
textBox2.Text = listBox2.SelectedItem.ToString();
}
// ③選択されている値をテキストボックスに表示する
if (listBox3.SelectedItem != null)
{
textBox3.Text = listBox3.SelectedValue.ToString();
}
// ①選択されている値をテキストボックスに表示する
if (listBox4.SelectedItem != null)
{
textBox4.Text = listBox4.SelectedValue.ToString();
}
}
}
}
実行結果
起動直後、3行目が選択状態でひょうじされます。
そのまま「選択しているものを表示する」をクリックします。
上段:名称がそのまま取得され、テキストボックスに表示されます。
下段:コードが取得され、テキストボックスに表示されます。
空行を選択し、「選択しているものを表示する」をクリックします。
空行選択なので、テキストボックスには何も表示されません。
それぞれ選択し、「選択しているものを表示する」をクリックします。
それぞれの値が取得され、テキストボックスに表示されます。
以上です。