コンンボボックス の注意事項
最も簡単な、テキストのみをコンボボックスに保存する方法。取り出すデータもテキストになるので、コード化された仕様を元に利用するのには向いていません。しかし、手っ取り早く表示するのは簡単です。
テキストのみであれば、プロパティより入力可能。
コンボボックス(ComboBox) という名前のクラスですが、デフォルトでは入力可能になってしまうので、一般的なコンボボックスとして使用したい場合は、プロパティで『DropDownList』に変更しておく必要があります。
初期状態で未選択にしてテキストを表示させないようにするには、comboBox1.SelectedIndex = -1; を実行します。
▼ 自動作成されるコード
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"男",
"女"});
this.comboBox1.Location = new System.Drawing.Point(51, 41);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(239, 20);
this.comboBox1.TabIndex = 0;
ここでは、AddRange が使用されていますが、一般的なコードとテキストを登録したい場合は以下のようなクラスを作成して、comboBox1.Items.Add( オブジェクト ) とします。
// ******************************
// コンボボックスに追加情報
// をセットする為のクラス
// ******************************
private class ComboData {
public ComboData(string Text, string Data) {
this.Text = Text;
this.Data = Data;
}
public string Text { get; set; }
public string Data { get; set; }
public override string ToString() {
return this.Text;
}
}
コンボボックスの選択が変更された場合は、SelectedIndexChanged イベントが実行されるので、以下のようにして Add されたオブジェクトの内容を取り出します
private void Form1_Load(object sender, EventArgs e) {
// ComboData を コンボボックスにセット
comboBox1.Items.Clear();
comboBox1.Items.Add(new ComboData("昨日", "0001"));
comboBox1.Items.Add(new ComboData("今日", "0002"));
comboBox1.Items.Add(new ComboData("明日", "0003"));
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
ComboBox cb = (ComboBox)sender;
// コンボボックスのテキスト
Console.WriteLine(cb.Text);
// コンボボックスの選択インデックス
int idx = cb.SelectedIndex;
Console.WriteLine(idx);
// 選択されていた場合は、Items コレクションでテキストとデータを表示
if (idx != -1) {
ComboData cdata = (ComboData)cb.Items[idx];
Console.WriteLine(cdata.Text);
Console.WriteLine(cdata.Data);
}
}
posted by
at 2017-10-29 17:07
|
C#
|
|