Я программировал приложение winform, и в одной форме у меня есть dataGridView.Конкретный столбец состоит из целых чисел, поэтому DataTable
, который является источником сетки, был определен как
DataTable dt = new DataTable();
dt.Columns.Add("Partition", typeof(int));
dt.Columns.Add("Number", typeof(int));
В любом случае, позже я попытаюсь проверить это, чтобы пользователь, например, не вводил"dadada".
Так что я делаю
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{int result;
if (!(int.TryParse(e.FormattedValue.ToString(), out result)))
{Trace.Writeline("error");
return;
}
}
TryParse
, как предполагается, не генерирует исключение, и обрабатывает его хорошо до последнего }
при выходе из функцииэто исключение.
Я пытался
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
int result=0;
try
{
result = int.Parse(e.FormattedValue.ToString());
}
catch
{
MessageBox.Show("error");
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0;
return;
}
if(result<0)
{
MessageBox.Show("positives!");
return;
}
}
И на этот раз перехватчик ловит исключение (Parse), но затем снова возникает другое исключение при выходе из функции.
IИнтересно, что не так и как проверить целочисленный вход в сетку