我有一個已經填滿的 DataGridView 表。現在,當我單擊 DataGridView 中的一個單元格時,我想從單元格中創建一個 ComboBox,然后我可以在其中選擇“專案”的選擇。
Dgv_Data_List 是我的 DataGridView。
private void Dgv_Data_List_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewComboBoxCell CboCell = new DataGridViewComboBoxCell();
CboCell.Items.AddRange("Yes", "No");
Dgv_Data_List.Rows[e.RowIndex].Cells[e.ColumnIndex] = CboCell; <--At this point my program crashes
}
我不想要任何固定的組合框。它們應該在運行時在需要時立即創建。
uj5u.com熱心網友回復:
目前還不清楚網格是如何填充資料的。你可以逃脫這個,如果是手動添加的行和列,但是如果電網有DataSource,那么當你“雙擊”進入細胞并且設定單元格作為一個組合框為你展示......然后是“當前”單元格值最好是“是”或“否”,否則你會得到網格DataError抱怨單元格中的值不是有效的組合框值。
我認為您必須“洗掉”當前單元格值以避免可能的錯誤。就像是…
DataGridViewComboBoxCell CboCell = new DataGridViewComboBoxCell();
CboCell.Items.AddRange("Yes", "No");
Dgv_Data_List.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "";
Dgv_Data_List.Rows[e.RowIndex].Cells[e.ColumnIndex] = CboCell;
將單元格值設定為空白string將起作用。但是,如果資料源基礎單元格的列型別是數字型別......那么你會得到網格DataError抱怨“是”或“否”值不是一個有效的數字值......所以從技術上講,這只會在以下情況下作業列型別是string型別列。由于其中大部分是未知的,我只能假設所有單元格都是一種string型別。
uj5u.com熱心網友回復:
正如給出的代碼,您創建了comboboxcell但未轉換網格視圖。所以這樣做吧。
this.dataGridView1[CboCell] = new DataGridViewComboBoxCell();
在創建comboboxcell.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/359747.html
