编辑时更改为 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的主要内容,如果未能解决你的问题,请参考以下文章