コンボボックスに項目を追加するサンプルコードになります。ポイントは、追加するアイテムはオブジェクト ( 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 + "!!"; } } }