Текущая ячейка останется неизменной в случае сбоя проверки. — Событие CellEndEdit

#vb.net #validation #datagridview

#vb.net #проверка #datagridview

Вопрос:

У меня есть datagridview для ввода пользователем.

Например, столбцы «Имя», «Дата рождения»…

Для части «Дата рождения» я реализовал проверку…

я хочу сделать так, чтобы пользователь должен был ввести действительную «Дату рождения», прежде чем ему разрешат покинуть ячейку. Это означает, что после того, как они вошли в ячейку, они должны предоставить действительную «Дату рождения», после чего они могут двигаться дальше.

хотел бы узнать, как это можно сделать, я попытался установить DGV.CurrentCell в указанную ячейку внутри события «CellEndEdit». Но это выдает мне следующую ошибку: «операция недопустима, поскольку это приводит к повторному вызову функции setcurrentcelladdresscore»

Ответ №1:

Я полагаю, вы можете достичь этого, используя проверку ячейки

 void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    if(e.ColumnIndex == 3)
    {
       e.FormattedValue // Check your date validation against this value
       e.Cancel = true; // set this to true if validation fails
    }
}
  

Это поможет сохранить фокус в той же ячейке в случае неправильного ввода пользователем.