所以我有一个用户正在输入数据的DGV。数据应该是数字但我知道需要处理空格和字母字符。
我没有输入任何CellValidating或CellFormatting事件,所以我想通过DGV的数据错误处理程序来处理它。
我将以下代码放在我的DGV中,但是iut似乎没有正常启动。我在Debug中运行时得到错误文本,但这是非常技术性的“Syste,.Format Exception ...”文本,我不希望用户看到它。我会在我的DataError事件处理程序中获取消息框。
private void grd1_DataError(object sender, DataGridViewDataErrorEventArgs anError)
{
MessageBox.Show("Error happened " + anError.Context.ToString());
if (anError.Context == DataGridViewDataErrorContexts.Commit)
{
MessageBox.Show("Commit error");
}
if (anError.Context == DataGridViewDataErrorContexts.CurrentCellChange)
{
MessageBox.Show("Cell change");
}
if (anError.Context == DataGridViewDataErrorContexts.Parsing)
{
MessageBox.Show("parsing error");
}
if (anError.Context == DataGridViewDataErrorContexts.LeaveControl)
{
MessageBox.Show("leave control error");
}
if ((anError.Exception) is ConstraintException)
{
DataGridView grd1 = (DataGridView)sender;
grd1.Rows[anError.RowIndex].ErrorText = "an error";
grd1.Rows[anError.RowIndex].Cells[anError.ColumnIndex].ErrorText = "an error";
anError.ThrowException = false;
}
}
那么为什么我的DataError事件处理程序不会触发错误?我是否需要输入强制触发的代码(我以为它会在出错时自动触发)?