在單個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 –