コンボボックスに項目を追加するサンプルコードになります。ポイントは、追加するアイテムはオブジェクト ( object ) であり、文字列だけではない点です。 もちろん文字列をそのまま追加することも可能ですが、選択時に取得したい項目が複数あるような場合などでは使い勝手が悪いです。
スポンサーリンク
コンボボックスにクラスオブジェクトをアイテムとして追加する
以下のサンプルでは、任意のオブジェクトをコンボボックスに追加し、表示されるテキストも ToString メソッドをオーバーライドして編集しています。詳細はコメントを参照ください。
VB.NET
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' 追加するオブジェクトを作成
Dim item1 As New CmbItem("value1", "text1")
Dim item2 As New CmbItem("value2", "text2")
' コンボボックスにアイテムを追加
Me.ComboBox1.Items.Add(item1)
Me.ComboBox1.Items.Add(item2)
' 一つ目のアイテムを選択状態にする
Me.ComboBox1.SelectedIndex = 0
' 選択されているオブジェクトを取得
Dim selectedItem As CmbItem = DirectCast(Me.ComboBox1.SelectedItem, CmbItem)
MessageBox.Show(selectedItem.Value) ' value1
MessageBox.Show(selectedItem.Text) ' text1
End Sub
''' <summary>
''' コンボボックスに追加するオブジェクト
''' </summary>
Public Class CmbItem
Public Text As String
Public Value As String
Public Sub New(ByVal value As String, ByVal text As String)
Me.Text = text
Me.Value = value
End Sub
''' <summary>
''' Object.ToString メソッドをオーバーライドし
''' コンボボックスに表示されるテキストを設定する
''' </summary>
Public Overrides Function ToString() As String
Return Me.Text + "!!"
End Function
End Class
End Class
C#
※ C# のサンプルコードでは自動実装プロパティを使用しているため、C#2008 以降の環境が必要となります。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 追加するオブジェクトを作成
CmbItem item1 = new CmbItem("value1", "text1");
CmbItem item2 = new CmbItem("value2", "text2");
// コンボボックスにアイテムを追加
this.comboBox1.Items.Add(item1);
this.comboBox1.Items.Add(item2);
// 一つ目のアイテムを選択状態にする
this.comboBox1.SelectedIndex = 0;
// 選択されているオブジェクトを取得
CmbItem selectedItem = (CmbItem)this.comboBox1.SelectedItem;
MessageBox.Show(selectedItem.Value); // value1
MessageBox.Show(selectedItem.Text); // text1
}
/// <summary>
/// コンボボックスに追加するオブジェクト
/// </summary>
public class CmbItem
{
public string Text { get; set; }
public string Value { get; set; }
public CmbItem(string value, string text)
{
this.Text = text;
this.Value = value;
}
/// <summary>
/// Object.ToString メソッドをオーバーライドし
/// コンボボックスに表示されるテキストを設定する
/// </summary>
public override string ToString()
{
return this.Text + "!!";
}
}
}