datagridview に埋め込まれた datagridviewcombobox (ドロップダウン メニュー) コントロールから新しい値を選択すると、例外が発生します。コンボボックスは、私のクラスのインスタンスが取り込まれた BindingSource によって取り込まれます。メニューにオプションを適切に表示して選択することはできますが、フォーカスを新しいコントロールに変更すると (私が推測する変更をコミットすると)、例外が表示されます: Invalid Cast from System.String to myclass. スタック トレース (その単語を正しく使用している場合) は、ソースが
System.Windows.Forms.DataGridView.PushFormattedValue が System.Convert.DefaultToType にカスケードする
より明確な説明を以下に示します (長くなって申し訳ありませんが、再現できるようにしたかったのです)。
プロパティのない Occupant という空のクラスがあります (Occupant にも文字列の Name プロパティがある場合に問題が発生するため、そうではありません)。OccupantSource という名前の BindingSource があり、その DataSource は Occupant を指しています。
また、Driver と呼ばれる 1 つの Occupant プロパティを持つ Car と呼ばれるクラスもあります。
私の Form_Load() では、OccupantSource.AddNew() を 2 回呼び出し、CarSource.AddNew() を 1 回呼び出します。
DataGridView コントロールがあり、その DataSource は CarSource (Cars で構成される BindingSource) です。DGV には 1 つの列があり、CarSource 内の車の Driver プロパティを表示します。これは、DataPropertyName がドライバーに設定された DataGridViewComboBoxColumn です。
だから私が望むのは、Datagridview に車の行を表示することです。列の 1 つはドロップダウンして、Occupant の既存のインスタンスからドライバーを選択できるコンボボックスです。しかし、私は例外を取得します。
これは私が誤解しているものですか?クラスのインスタンスを使用して DataGridViewComboBox を作成することはできませんか?