[C#][Windows Formsアプリ][ComboBox] SelectedValue プロパティで選択された値を取得・設定する

スポンサーリンク

はじめに

SelectedValue プロパティは、ComboBoxにデータバインドを行ったとき、
現在選択されている項目の「値(ValueMemberに対応)」を取得または設定できるプロパティです。
データベースやオブジェクトのIDを扱う場面で頻繁に使用されます。

 

SelectedValueプロパティとは?

SelectedValue は、DisplayMemberValueMember を設定したときに
「表示されているテキスト」とは別に「内部で保持する値」を取得・設定するためのプロパティです。

💡 ポイント:
ユーザーが「東京」を選んだとき、
DisplayMember = "Name"(=東京)
ValueMember = "Id"(=1)
という形で「表示用」と「値用」を分けて管理できます。

 

基本構文

// 値を取得
var id = comboBox1.SelectedValue;

// 値を設定
comboBox1.SelectedValue = 2;

設定した値が ValueMember に一致する項目が存在する場合、
その項目が自動的に選択状態になります。

 

使用例:データバインドでIDと名前を分けて管理

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ComboBoxSelectedValueSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            var cities = new List<City>
            {
                new City { Id = 1, Name = "東京" },
                new City { Id = 2, Name = "大阪" },
                new City { Id = 3, Name = "名古屋" },
                new City { Id = 4, Name = "福岡" }
            };

            comboBox1.DataSource = cities;
            comboBox1.DisplayMember = "Name";  // 表示するプロパティ
            comboBox1.ValueMember = "Id";      // 値として扱うプロパティ

            comboBox1.SelectedValue = 2; // 「大阪」を選択
        }

        private void buttonShowValue_Click(object sender, EventArgs e)
        {
            int selectedId = (int)comboBox1.SelectedValue;
            string selectedName = comboBox1.Text;
            MessageBox.Show($"選択された都市: {selectedName}(ID={selectedId})");
        }
    }

    public class City
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

この例では、コンボボックスの表示は「Name」、
内部的な値は「Id」で管理しています。
選択された都市のIDを SelectedValue から直接取得できます。

 

DisplayMember・ValueMember・SelectedValueの関係

プロパティ 内容
DisplayMember 画面に表示するプロパティ “東京”
ValueMember 内部的に扱う値 1
SelectedValue 選択された項目の ValueMember に対応する値 1
🟩 例:
ユーザーが「大阪」を選択 →
comboBox1.Text は “大阪”
comboBox1.SelectedValue2

 

SelectedValueを使った選択制御

特定のIDを選択する

comboBox1.SelectedValue = 3; // 「名古屋」を選択

現在のIDを取得する

int id = (int)comboBox1.SelectedValue;

選択を解除する

comboBox1.SelectedIndex = -1; // または DataSource を再設定

 

注意点

  • SelectedValueValueMember が設定されていないと機能しません。
  • Items.Add() で項目を追加した場合には使用できません(DataSource専用)。
  • 値の型(int / string など)が一致しないと選択されません。
  • データバインドを変更した場合、SelectedValue の再設定が必要になることがあります。

 

応用例:データベースIDで項目を選択

// 例:前回選択したIDを再設定する
int lastSelectedId = 4;
comboBox1.SelectedValue = lastSelectedId;

ユーザーが前回選んだ値を保存しておき、次回起動時に再現するようなケースでも
SelectedValue が役立ちます。

 

8. まとめ

  • SelectedValue はデータバインド時に内部値(IDなど)を取得・設定できるプロパティ
  • DisplayMemberValueMember をセットで使用する
  • 型の一致とバインドの順序に注意
  • データベース連携やオブジェクト管理で特に有用
Please follow and like us:

コメント

タイトルとURLをコピーしました