■ はじめに
* 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