将 DataGridView 的单个单元格变成 Combobox

Posted

技术标签:

【中文标题】将 DataGridView 的单个单元格变成 Combobox【英文标题】:Turning individual cells of DataGridView into Combobox 【发布时间】:2015-09-02 12:16:56 【问题描述】:

环境:Visual Studio 中的 Web 开发 语言:ASP.NET

恐怕我已经知道答案了,但问也无妨。我有一个从 SAP 获取数据的应用程序,可以为 DataGridView 的每一行返回特定结果或可能结果列表。因此,用户可能会输入“abcd”并得到“1234”,或者他可能会得到“1234 or 2345 or 3456”。对于每一行,我希望每一列都有多个结果作为组合框返回。其余的应该保持不变,因为表格中到处都是只有一个结果的组合框会很烦人。

有什么技巧可以做到这一点吗?我知道您可以使用 DataGridViewComboBoxColumn 将一整列“转换”为一列组合框,就像在这个博客中一样: http://mytactics.blogspot.de/2014/01/convert-datagridview-column-to-combo-box.html .有没有办法让组合框只适用于特定的单元格?我知道我可以在表格的每一行旁边放置一个组合框,让用户从中进行选择,或者我可以在每一行中都有一个组合框,并且可能锁定只有一个结果的组合框。不过,我对这两种解决方案都不满意。

【问题讨论】:

【参考方案1】:

您可以尝试将 ComboBox 添加到 yourDataGridViewCell.Controls 并创建 label.Visible = false; 或将其删除。它会是这样的:

yourDataGridViewCell.Controls.Clear();
yourDataGridViewCell.Controls.Add(new ComboBox());
yourDataGridViewCell.Controls[0].DataSource = yourList;
//set the value member etc.

【讨论】:

效果很好,谢谢!在这里,我认为让这个工作起来会很痛苦。

以上是关于将 DataGridView 的单个单元格变成 Combobox的主要内容,如果未能解决你的问题,请参考以下文章

c#winform中datagridview中某单元格,开始输入内容,然后把输入清空再保存,提示错误。

Datagridview全行选择但获得单个单元格值

winform中。datagridview 选中某行 然后点击编辑。编辑的时候单元格变成文本框。

c# datagridview 单个 单元格的样式(即字号或者字体颜色)发生改变时候,触发啥事件???

求C#高手,Excel中单元格显示的是日期格式,当我读取到DataGridView中时,就变成了文本格式了

c#winFORM 的dataGridView 控件 单元格 颜色报警