DataGridViewComboBoxColumn
現在は、ドキュメント用にと、DI、AOP、DataBinding(以降、連結と訳す)を使ったサンプルのWindowsFormsアプリケーションを作っているのだが、標題のクラスにめちゃめちゃはまっている。
カスタムオブジェクトを通常のComboBoxやListBoxに連結するのと同様に、クラスが公開しているリスト(正確にはIList
private DataGridViewColumn CreateDataGridViewColumn(PropertyInfo propInfo, Control control) { 〜略〜 if ( control is ListControl) { DataGridViewComboBoxColumn listColumn = new DataGridViewComboBoxColumn(); listColumn.Name = propInfo.Name; object bindObject = propInfo.GetValue(this, null); ← Listのインスタンス listColumn.ValueType = bindObject.GetType(); listColumn.DataPropertyName = propInfo.Name; listColumn.DataSource = bindObject; return listColumn; } }
いざ実行してコンボボックスのドロップダウンを操作すると、例外の嵐。
'System.InvalidCastException' の初回例外が mscorlib.dll で発生しました。 'System.FormatException' の初回例外が System.Windows.Forms.dll で発生しました。 'System.InvalidCastException' の初回例外が mscorlib.dll で発生しました。 'System.FormatException' の初回例外が System.Windows.Forms.dll で発生しました。 'System.InvalidCastException' の初回例外が mscorlib.dll で発生しました。 'System.FormatException' の初回例外が System.Windows.Forms.dll で発生しました。
カラム(セル)に設定された、オブジェクトとコンボボックスに表示する文字列の編集又は変換に失敗しているっぽいのだが、ひさびさに想像も付かないレベルで何が悪いのかさっぱりわからん。
う〜ん。まずはDataGridView#DataErrorイベントを引っ掛けて原因を探るところからだな。