我這樣做是因爲在網上找到答案花了太長的時間,這可能是一個常見的問題 - 這是我第二次在我的身上體驗過它應用程序。由於DataGridViewImageColumn DataGridView在默認錯誤對話框中拋出異常
當一個新行與DataGridViewImageCell變得可見,並且它沒有默認值設置,我的DataGridView拋出以下異常:
以下異常發生在DataGridView:
System.ArgumentException :參數無效。在 System.Drawing.Image.FromStream(流流,布爾 useEmbeddedColorManagement,布爾validateImageData)」
在我建立我在Visual Studio設計的DataGridViewImageColumns,然後在綁定的DataTable這些列DataColumns當新行的DataGridViewImageColumn變得可見的byte []
但是,它仍然拋出該異常
有跡象表明,對於m工作兩種解決方法:設置DataGridViewImageColumns的DataPropertyName屬性相匹配類型的DataColumns。 E:
- 取消選中「啓用添加」選項,在設計師 - 再行添加程序 - 使用按鈕等等 - 我想這是我做的第一次輪。
處理在DataGridView的DataError事件是這樣的:
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) { if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == DBNull.Value) { e.Cancel = true; } }
這就是我與去爲現在的選擇,但我不抑制異常的粉絲,我可以看到在延遲由於處理程序拋出+捕獲而創建DataGridView行。
MSDN(http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewimagecolumn.aspx)表示您可以處理RowsAdded事件並強制爲空值。我試過這個:
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
foreach (DataGridViewCell cell in dataGridView1.Rows[e.RowIndex].Cells)
{
if (cell.GetType() == typeof(DataGridViewImageCell))
{
cell.Value = DBNull.Value;
}
}
}
......哪些沒有工作。
另一個選項涉及將Column CellTemplate設置爲從DataGridViewImageColumn派生的Type,其默認值爲null或DBNull.Value。
現在有點晚了 - 我一整天都在這裏。
我可能會去我的選項2,但任何人都可以告訴我如何讓選項3/4工作?有沒有最好的辦法呢?
對於dataGridView1_RowsAdded,「哪些不起作用」是什麼意思?你把它正確連接起來了嗎?如果您在處理程序中設置了任何斷點,是否遇到任何斷點?或者您的意思是您仍然收到異常? –