在我的情况下,CellValueChanged 事件也在 DGV 初始化时触发,所以我想使用 CellEndEdit,正如 King King 在他的回答中提到的那样。
为了使King King的第二个答案更加防弹(参见JPProgrammer的评论),即仅做出反应,如果在单元格中输入了值,您可以执行以下操作:
private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int? rowIdx = e?.RowIndex;
int? colIdx = e?.ColumnIndex;
if (rowIdx.HasValue && colIdx.HasValue)
{
var dgv = (DataGridView)sender;
var cell = dgv?.Rows?[rowIdx.Value]?.Cells?[colIdx.Value]?.Value;
if (!string.IsNullOrEmpty(cell?.ToString()))
{
// your code goes here
};
};
}
请注意使用?.
和?[
运算符对空值的处理。我写了它,以便它可以以更通用的方式使用,但当然您可以添加对“参考”列的检查,只需将if
上面的内部语句替换为以下内容:
if (dgv.Columns[colIdx.Value].Name == "Reference")
{
if (!string.IsNullOrEmpty(cell?.ToString()))
{
// your code goes here
};
};