我有一个 Windows 窗体应用程序,其中一部分带有 DataGridView (DGV)。我使用 Visual Studio UI 将列添加到 DGV,然后以编程方式添加具有一些默认值的行。我的问题是一旦添加了行,任何选择的单元格都会自动清空其中的任何值——甚至是只读单元格!
我只处理 DGV 的“CellValueChanged”事件,所做的只是验证行以确保至少存在一个有效的值组合,然后启用按钮。
更令人困惑的是,选定的单元格清除问题并不总是发生。添加行后,除非您进行更改或执行使用行重新加载 DGV 的操作,否则所有单元格都将清除。之后,一些细胞或没有细胞会自行清除。
有没有人遇到过这种情况或知道解决问题的方法?我从谷歌得到的只是“如何使单元格清晰”之类的。
谢谢,
- 马特
* 更新 *
向 DGV 添加新行的代码:
metaMapGrd.Rows.Clear();
((DataGridViewComboBoxColumn)metaMapGrd.Columns[1]).DataSource = _excel.ListHeaders(worksheetListCmb.SelectedItem.ToString());
foreach (Field f in _sharePoint.CurrentFieldList)
{
// skip the key field matching portion. These should be for comparison only.
if (f.Title == spListKeyCmb.SelectedItem.ToString())
{
continue;
}
DataGridViewRow row = new DataGridViewRow();
metaMapGrd.Rows.Add(row);
DataGridViewTextBoxCell spcell = new DataGridViewTextBoxCell();
spcell.Value = f.Title;
spcell.ToolTipText = f.TypeAsString;
row.Cells["spListColumn"] = spcell;
DataGridViewCheckBoxCell fcell = new DataGridViewCheckBoxCell();
fcell.Value = true;
row.Cells["useThisColumn"] = fcell;
}
metaMapGrd.CurrentCell = null;