30秒で結論
SelectedValueがnullなら、まず確認したいのはこれです。
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なら、
SelectedIndex == -1ではないか- DataSourceは設定済みか
- ValueMemberは正しいか
- 初期化途中のイベントではないか
を確認してみてください。
Please follow and like us:
コメント