これをより簡単にする 1 つの方法は、データ バインディングを使用することです。
アプライアンス オブジェクトがあるとします。
public class Appliance
{
public string Make { get; set; }
public string ApplianceType { get; set; }
public string Model { get; set; }
public double Price { get; set; }
public string Info { get; set; }
public string ShowString
{
get { return String.Format("{0} {1}", Make, ApplianceType); }
}
}
そして、これらのリストをコンボボックスにバインドしたいとします。コンボボックスに表示されるプロパティを定義し、選択したオブジェクトをクラスにキャストできます。
List<Appliance> appliances = new List<Appliance>();
// populate list; for example:
appliances.Add(new Appliance
{
Make = "Whirlpool",
ApplianceType = "Fridge",
Model = "WP-300",
Price = 500.00,
Info = "Cools to 4C!"
});
appliances.Add(new Appliance
{
Make = "Maytag",
ApplianceType = "Dishwasher",
Model = "MT-80A",
Price = 400.00,
Info = "Washes spot free!"
});
cmbApplianceList.DataSource = appliances;
cmbApplianceList.DisplayMember = "ShowString";
(ValueMember
一意のプロパティにバインドできるものもあります。)
誰かがコンボボックス内の項目を選択すると、選択したクラスに対して次の操作を実行できます。
cmbApplianceList_SelectedIndexChanged(object sender, EventArgs e)
{
Appliance selectedAppliance = (Appliance)cmbApplianceList.SelectedItem;
MessageBox.Show(selectedAppliance.Info);
}
この場合、メッセージ ボックスInfo
に、選択したアプライアンスのプロパティが表示されます。