C# 将 DatagridViewTextbox 转换为 DataGridViewComboBoxCell
C# Convert DatagridViewTextbox to DataGridViewComboBoxCell
我有一个已填充的 DataGridView table。
现在,当我单击 DataGridView 中的一个单元格时,我想从该单元格中创建一个组合框,然后我可以在其中选择“项目”。
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
}
我不想要任何固定的组合框。它们应该在需要时在运行时创建。
不清楚网格是如何填充数据的。如果列和行是手动添加的,你可能会逃避这个问题,但是如果网格有 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
类型。
正如给定的代码,您创建了 comboboxcell
但没有转换网格视图。所以改为这样做。
this.dataGridView1[CboCell] = new DataGridViewComboBoxCell();
在创建 comboboxcell
的地方试试这个。
我有一个已填充的 DataGridView table。 现在,当我单击 DataGridView 中的一个单元格时,我想从该单元格中创建一个组合框,然后我可以在其中选择“项目”。
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
}
我不想要任何固定的组合框。它们应该在需要时在运行时创建。
不清楚网格是如何填充数据的。如果列和行是手动添加的,你可能会逃避这个问题,但是如果网格有 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
类型。
正如给定的代码,您创建了 comboboxcell
但没有转换网格视图。所以改为这样做。
this.dataGridView1[CboCell] = new DataGridViewComboBoxCell();
在创建 comboboxcell
的地方试试这个。