【C#】【Form】 ComboBox ~ 基本編 ~

■ はじめに

 * C# の Form のコンボボックスが使いにくかったので、基本をまとめていく

■ サンプル

 * とりあえず、説明するよりも、簡単なサンプルから学ぶ

例1:Dictionaryからコンボボックス作成する

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace SampleForm
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      
      Dictionary<int, string> keyValues = new Dictionary<int, string>
      {
        [1] = "Tokyo",
        [2] = "Osaka",
        [3] = "Hokaido"
      };

      this.comboBox1.DisplayMember = "Value";
      this.comboBox1.ValueMember = "Key";
      this.comboBox1.DataSource = new BindingSource(keyValues, null);
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      this.label1.Text = "Text : " + this.comboBox1.Text;
      this.label2.Text = "SelectedIndex : " + this.comboBox1.SelectedIndex;
      this.label3.Text = "SelectedText : " + this.comboBox1.SelectedText;
      this.label4.Text = "SelectedValue : " + this.comboBox1.SelectedValue;
      this.label5.Text = "SelectedItem : " + this.comboBox1.SelectedItem;
    }
  }
}
出力結果:「Hokaido」を選択した時の表示
Text : Hokaido
SelectedIndex : 2
SelectedText : 
SelectedValue : 3
SelectedItem : [3, Hokaido]

■ 基本的な使い方

 * 次にサンプルでも使用してことも含めて、使い方を纏める
  => それ以外のことについては、以下の関連記事を参照。
コンボボックス・ComboBox ~あれこれ編~
https://blogs.yahoo.co.jp/dk521123/20513549.html
ComboBox ~ 複数コンボボックスを連動させるには ~
https://blogs.yahoo.co.jp/dk521123/37979233.html

選択した値を取得するには...

選択した項目の表示値を取得する
 * 「comboBox.Text」で取得する
  => はじめ、「SelectedText」で取得できるかと思ったが...
選択した項目の値を取得する
 * 「comboBox.SelectedValue」で取得する
選択した項目のインデックス(添え字)を取得する
 * 「comboBox.SelectedIndex」で取得する

デザインビューから値をComboBoxに反映させるには...

 * プロパティ「Items」に、値を書き込む
   (例えば、サンプルのように)
サンプル
0-10000
10001-20000
20001-30000
30001-40000
40001-50000
コード
MessageBox.Show("Salary : " + comboBox1.Text, "Info");

起動時に先頭の項目をすでに選択するには...

 * 初期状態では、テキストボックス部分が空欄になっている(SelectedIndexプロパティが「-1」の状態) 
  => 起動時に先頭を選択されるように指定すれば解決
サンプル
#region 初期表示時
/// <summary>
/// 初期表示時
/// </summary>
private void MainForm_Load(object sender, EventArgs e)
{
    // 初期表示時に、先頭の項目を選択
    this.comboBoxMode.SelectedIndex = 0; 
}
#endregion
参考資料
http://www.atmarkit.co.jp/fdotnet/dotnettips/666readonlycb/readonlycb.html


関連記事

Windows Form ~ 目次 ~

https://blogs.yahoo.co.jp/dk521123/8054245.html

コンボボックス・ComboBox ~あれこれ編~

https://blogs.yahoo.co.jp/dk521123/20513549.html

ComboBox ~ 複数コンボボックスを連動させるには ~

https://blogs.yahoo.co.jp/dk521123/37979233.html