9/2 C# ComboBoxでSelectedValueがnullになる原因【.NET 10で検証】

スポンサーリンク

30秒で結論

SelectedValuenullなら、まず確認したいのはこれです。

comboBox1.SelectedIndex

-1なら、現在何も選択されていません。

また、データバインド中にイベントが発生し、一時的に値を取得できないケースにも注意が必要です。

検証環境

  • Windows 11
  • Visual Studio 2026
  • .NET 10
  • C# 14
  • Windows Forms
  • 検証日:[実機検証後に記入]

基本コード

public class City
{
    public int Id { get; set; }
    public string Name { get; set; } = "";
}
comboBox1.DataSource = new List<City>
{
    new() { Id = 1, Name = "東京" },
    new() { Id = 2, Name = "大阪" }
};

comboBox1.DisplayMember = nameof(City.Name);
comboBox1.ValueMember = nameof(City.Id);

ケース1:何も選択されていない

comboBox1.SelectedIndex = -1;

var value = comboBox1.SelectedValue;

実行結果

SelectedIndex == -1なら、選択項目そのものがありません。

ケース2:イベント内で取得している

private void comboBox1_SelectedValueChanged(
    object sender, EventArgs e)
{
    Debug.WriteLine(
        comboBox1.SelectedValue ?? "null");
}

データを設定している途中でもイベントが発生することがあります。

安全に取得する

if (comboBox1.SelectedValue is int cityId)
{
    Debug.WriteLine(cityId);
}

これならnullや想定外の型でも例外になりません。

HIROのひとこと

SelectedValueがnullになると、ついそのプロパティだけを疑いたくなります。

でも実際には、

SelectedIndex
SelectedItem
DataSource
ValueMember

まで一緒に見る方が、原因へ早くたどり着けます。

まとめ

SelectedValueがnullなら、

  1. SelectedIndex == -1ではないか
  2. DataSourceは設定済みか
  3. ValueMemberは正しいか
  4. 初期化途中のイベントではないか

を確認してみてください。

Please follow and like us:

コメント

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