我從嵌入在一個DataGridView一個datagridviewcombobox(下拉菜單)的控制選擇一個新的值時,遇到一個異常。組合框由BindingSource填充,該組件填充了我的類的實例。我可以正確顯示菜單中的選項,然後選擇一個,但將焦點更改爲新控件(提交我猜測的更改)會導致出現異常:無效從System.String轉換爲myclass。堆棧跟蹤(如果即時通訊使用這個詞右)來源是C#的Winforms DatagridviewCombobox例外串不能被轉換爲
System.Windows.Forms.DataGridView.PushFormattedValue 級聯到 System.Convert.DefaultToType
更明確的解釋是低於(抱歉它很長,但我想使它可重現):
我有一個空的類叫做Occupant,沒有任何屬性(問題存在,當Occupant也有一個字符串Name屬性,所以不是這樣)。我有一個名爲OccupantSource的BindingSource,它的DataSource指向Occupant。
我也有一個叫Car的類,有一個叫做Driver的Occupant屬性。
在我的Form_Load(),我兩次打電話OccupantSource.AddNew(),並呼籲立即CarSource.AddNew()。
我有一個DataGridView控制,其數據源是CarSource(BindingSource的由汽車的)。 DGV有一列,在CarSource中顯示汽車的駕駛員屬性。它是一個DataGridViewComboBoxColumn,並將DataPropertyName設置爲驅動程序。
所以,我想要的是展車的排在DataGridView,與一列是一個組合框,我可以下拉列表,選擇從乘客的現有實例的驅動器。但我得到了例外。
這是我誤解的東西嗎?你不能使用類的實例來填充DataGridViewComboBox嗎?
可能是從組合框顯示的選定項目/當前項目作爲對象來到,但在內部它可能是一個字符串。焦點不集中的是內部調用嘗試轉換的提交事件。 – Zenwalker
什麼是您收回的Exception.Message? – MoonKnight
我忘了提及,有一個叫做CarSource的BindingSource,而DGV的ComboBoxBolumn的數據源被設置爲OccupantSource。該項目中沒有字符串,並且異常消息在這裏:http://img508.imageshack.us/img508/2586/unledbfv.jpg – Moz