我正在使用Datagridview,我有5列(3列接受唯一的日期)。对于其中一列,我正在使用CellValidating
事件,并编写了以下代码:
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
if (e.ColumnIndex == 3)
{
if (datagridview1.Rows[e.RowIndex].IsNewRow)
return;
String data = e.FormattedValue.ToString();
if (data != string.Empty)
{
String validate = @"(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](19|20)\d\d";
Regex nameAlphabet = new Regex(validate);
String nameGridView = data;
if (!(nameAlphabet.IsMatch(nameGridView)))
{
e.Cancel = true;
MessageBox.Show("Please follow MM/dd/yyyy format to insert date.");
}
else
return;
}
}
}
这个列接受'mm/dd/yyyy'格式,但是当我传递空格和调试代码时,调试器没有进入上面的代码,但是之后,我得到了下面的错误。
请告知我没有得到正确的解决方案。
请查看MessageBox的底部:
若要替换此默认对话框,请处理DataError事件。
在表单
中选择DataGridView
组件,转到属性>;事件并双击DataError
条目,Visual Studio将自动生成以下代码:
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
然后在括号之间添加处理输入错误的逻辑。
例如:
MessageBox.Show($"Wrong input! {e.Exception.Message}");
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = null;
e.ThrowException = false;