编辑时更改为 ComboBox 的 DataGridViewTextBoxColumn

Posted

技术标签:

【中文标题】编辑时更改为 ComboBox 的 DataGridViewTextBoxColumn【英文标题】:DataGridViewTextBoxColumn that changes to ComboBox on editing 【发布时间】:2011-09-19 12:58:02 【问题描述】:

我想显示一个带有 ComboBox 列的 DataGridView,它看起来像 DataGridViewTextBoxColumn。

在 DataGridView 中,我显示了 DataGridViewTextBoxColumn,当​​用户将焦点设置在此列中的一个单元格上时,该单元格应更改为 ComboBox。

我不知道必须重写哪个函数。

DataGridTextBoxColumn 中有 Edit 函数,我可以在这个函数中绘制我的组合框吗?

【问题讨论】:

【参考方案1】:

除非我遗漏了什么 - 你应该能够简单地使用 DataGridViewComboBoxColumn 列类型。

根据您添加列的方式,您可以在“添加列”对话框的“类型”下拉菜单中选择此类型,也可以像这样以编程方式添加它:

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
dataGridView1.Columns.Add(col);

要实现您在编辑之前看起来像文本框的组合框的效果,请将 DataGridViewComboBoxColumn DisplayStyle 属性设置为 Nothing:

List<string> names = new List<string>  "Joe", "Sally", "Kate" ;

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataSource = names;
col.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;

dataGridView1.Columns.Add(col);

您还可以通过 EditingControlShowing 事件访问 DataGridView 单元格的底层控件。

【讨论】:

是的,但我希望所有列都为 DataGridViewTextBoxColumn,并且在用户单击单元格之前,该单元格应更改为 DataGridViewComboBoxCell。 我在想这样的事情:akadia.com/services/dotnet_combobox_in_datagrid.html @albert 所以你想要一个在被点击之前看起来是一个文本框的组合框列? 是否有可能使这个组合框与第一项可编辑?就像使用 comboBoxToolStripItem 一样。 @albert - 是的,在editingcontrolshowing 事件中将底层组合框控件更改为DropDown 样式。这里解释了sommergyll.com/datagridview-usercontrols/… 虽然它可能值得在这个网站上进行更多搜索(我想我之前可能已经回答过这个问题)如果你什么也没找到,问一个问题,因为在这里收集大量信息以帮助未来人。

以上是关于编辑时更改为 ComboBox 的 DataGridViewTextBoxColumn的主要内容,如果未能解决你的问题,请参考以下文章

在图像悬停时更改为另一个图像?

运行单元测试时更改为 app.config

在现代 CSS 中悬停时更改为相对颜色

iOS7 UINavigationBar tintColor 在设置时更改为最大 .8

当单元格更改文本时更改行颜色的脚本

将名称ComboBox1更改为ComboBox6,并保持代码执行[保留]