在单个DataGridViewColumn中是否可以同时使用DataGridViewComboBoxCells和DataGridViewTextBoxCells?或者我绝对限制每列只有一种类型?在DataGridViewColumn中混合单元格类型
4
A
回答
6
有一个奇怪的解决方案。
默认情况下,将该列创建为TextBox。
处理单元格单击或单元格输入事件。
如果ColumnIndex匹配,则将列类型转换为ComboBox并设置项目。
一旦单元离开事件从相应的列索引触发,将其转换回文本框。
不要忘记在转换之前从Combo读取文本并将其设置为TextBox。
我知道这不是解决方案,但工程。
我很想知道是否有人有更好的主意。
发问的编辑:
这里是我最后写的代码:
// Using CellClick and CellLeave in this way allows us
// to stick combo boxes in a particular row, even if the
// parent column type is different
private void dataGrid_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex >= FIRST_COL && e.ColumnIndex <= LAST_COL && e.RowIndex == ROW_OF_INTEREST)
{
object value = dataGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
dataGrid.Columns[e.ColumnIndex].CellTemplate = new DataGridViewComboBoxCell();
var cell = new DataGridViewComboBoxCell {Value = value};
cell.Items.AddRange(_values);
dataGrid.Rows[e.RowIndex].Cells[e.ColumnIndex] = cell;
}
}
private void dataGrid_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex >= FIRST_COL && e.ColumnIndex <= LAST_COL && e.RowIndex == ROW_OF_INTEREST)
{
object value = dataGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
dataGrid.Columns[e.ColumnIndex].CellTemplate = new DataGridViewTextBoxCell();
var cell = new DataGridViewTextBoxCell {Value = value};
dataGrid.Rows[e.RowIndex].Cells[e.ColumnIndex] = cell;
}
}
此外,在创建列的时候,我必须确保它是一个通用列;即不是DataGridViewTextBoxColumn:
var col = new DataGridViewColumn
{
CellTemplate = new DataGridViewTextBoxCell()
};
这样,我可以稍后更改CellTemplate。
+0
非常感谢 - 这很好地工作。在标记为接受之前,我有兴趣看看是否有任何“更清洁”的解决方案;但这是一个很大的帮助! – Smashery
相关问题
- 1. 在DataGridViewColumn中格式化单元格
- 2. cellforrowatindexpath在单元格中混合数据
- 3. CSS中的混合单元
- 4. VBO中的混合类型?
- 5. XSD中的混合类型
- 6. 从不同类别的混合单元格的表引用
- 7. 与混合数据类型比较单元一阳matlab的
- 8. MatLab:绘制具有混合类型数据的单元阵列
- 9. 在混合类型的嵌套元组中打印格式化的浮点数
- 10. 数据类型混合在c中
- 11. 配置单元数据类型混淆
- 12. PHPExcel单元格类型
- 13. DataGridView单元格类型
- 14. ElasticSearch混合查询类型
- 15. Java映射混合类型
- 16. DataGridView怪异字符'q'问题自定义DataGridViewColumn单元格
- 17. 在scala中混合类型参数和抽象类型
- 18. 获取DHTMLX网格单元格类型
- 19. 更改单元格的格式类型
- 20. 一元类型混淆
- 21. 合并/混合单元格作为公式参数的范围
- 22. TableView混淆了单元格
- 23. iOS:UITableView单元格在滚动时混合起来
- 24. 在混合元素
- 25. 排序在EXTJS混合类型的网格列
- 26. C中的混合类型计算?
- 27. Pymc3中的分类混合模型
- 28. 混合内容类型在magnific popup
- 29. 在DataGridView列类型选择器中显示DataGridViewColumn
- 30. 为什么可以在类型字段中的类中混合?
对于我所知道的每栏都是一种类型。您可能必须从DataGridView继承以启用混合不同类型。 –
有一些解决方法 - 看看http://www.sommergyll.com/datagridview-usercontrols/datagridview-with-combobox.htm –