したがって、データソースとして BindingList を使用する DataGridView があります。
DataGridView.DataSource = new BindingList<Car>{...}
どこ
public class Car
{
public ColorName Color { get; set;}
}
と
public class ColorName
{
public int Id {get; set;}
public string Name{get; set;}
}
コンボボックス列を使用します。
DataGridViewComboBoxColumn colorNameDataGridViewTextBoxColumn;
colorNameDataGridViewTextBoxColumn.DataPropertyName = "Color";
colorNameDataGridViewTextBoxColumn.HeaderText = "Color";
colorNameDataGridViewTextBoxColumn.Name = "Color";
colorNameDataGridViewTextBoxColumn.DisplayMember = "Name";
colorNameDataGridViewTextBoxColumn.ValueMember = "Id";
colorNameDataGridViewTextBoxColumn.DataSource = new ColorName[] {...};
どうすればこれを機能させることができますか?! Id を ColorName にキャストしようとしていると思われるため、例外が発生しました。
空の ValueMember を使用するか、直接キャスト演算子を ColorName クラスに追加しようとしましたが、機能しません。
確かに、Car クラスで int を使用して色を表すことはできますが、それほど適切ではありません。
おそらくご想像のとおり、これらのクラスは実際にはキャッスル プロジェクトの ActiveRecord です。
どんなアイデアでも大歓迎です!