首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#将DatagridViewTextbox转换为DataGridViewComboBoxCell

C#将DatagridViewTextbox转换为DataGridViewComboBoxCell
EN

Stack Overflow用户
提问于 2021-11-18 07:44:33
回答 2查看 42关注 0票数 0

我有一个已经填满的DataGridView表。现在,当我单击DataGridView中的一个单元格时,我想要在该单元格之外创建一个ComboBox,然后我可以在其中选择"Items“。

Dgv_Data_List是我的DataGridView。

代码语言:javascript
运行
复制
        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
    }

我不想要任何固定的组合框。一旦需要,就应该在运行时创建它们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-18 08:17:28

目前还不清楚网格是如何填充数据的。如果手动添加列和行,则可能不会出现这种情况,但是,如果网格具有DataSource,则当您在单元格中“双击”并在显示…时将该单元格设置为组合框时那么“current”单元格的值最好是“Yes”或“No”,否则你会得到网格DataError,提示单元格中的值不是有效的组合框的值。

我认为您必须“删除”当前单元格值,以避免可能的错误。像…这样的东西

代码语言:javascript
运行
复制
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,提示“Yes”或“No”值不是有效的数字值…因此,从技术上讲,只有当列类型是string类型的列时,这才能起作用。因为大部分都是未知的,所以我只能假设所有的单元都是string类型的。

票数 0
EN

Stack Overflow用户

发布于 2021-11-18 08:18:08

正如给出的代码一样,您创建了comboboxcell,但没有转换网格视图。因此,请执行此操作。

代码语言:javascript
运行
复制
this.dataGridView1[CboCell] = new DataGridViewComboBoxCell();

在创建comboboxcell的地方尝试此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70016151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档