我正在使用以下代码验证 DataGridView ...
void centreDataGridView_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
if (centreDataGridView.Columns[e.ColumnIndex].Name == "code")
{
Regex codeRegex = new Regex("^[0-9]{5}[0-9A-Z]$");
if (!codeRegex.IsMatch(e.FormattedValue.ToString()))
{
centreDataGridView.Rows[e.RowIndex].ErrorText = "error text here";
}
}
}
void centreDataGridView_CellEndEdit(object sender,
DataGridViewCellEventArgs e)
{
centreDataGridView.Rows[e.RowIndex].ErrorText = string.Empty;
}
这有效,除非我输入新行然后再次离开而不输入任何数据,错误警告图标在新行选择器中仍然可见。我怎样才能清除它?
根据目前收到的建议,我将上面的代码修改如下...
void centreDataGridView_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
if (centreDataGridView.Columns[e.ColumnIndex].Name == "code")
{
if (!(centreDataGridView.Rows[e.RowIndex].IsNewRow) ||
(e.FormattedValue.ToString() != string.Empty))
{
Regex codeRegex = new Regex("^[0-9]{5}[0-9A-Z]$");
if (!codeRegex.IsMatch(e.FormattedValue.ToString()))
{
centreDataGridView.Rows[e.RowIndex].ErrorText = "error text here";
}
}
}
}
这确实解决了当没有输入数据时在新行旁边显示错误指示器的问题。但是,当我输入无效数据时,在输入无效数据后第一次移出该行时,在任何行中都不会显示错误指示符。如果我移出包含无效数据的行,然后移回该行,然后再次移出,则会显示错误指示器。