Как установить фокус на конкретную ячейку в datagridview после ошибки проверки? - PullRequest
1 голос
/ 26 марта 2012

Друзья, у меня есть приложение Windows, где я использую сетку данных для отображения существующих данных, а также для добавления / редактирования данных. Просмотр сетки данных имеет функцию, которая при нажатии клавиши Tab / Enter фокус перемещает к следующей ячейке. Если это последний столбец в строке, то фокус перейдет к первому столбцу следующей строки. Теперь после ввода данных для ячейки и нажатия клавиши Tab / Enter, если появляется сообщение об ошибке для неправильно введенных данных (например, числовое значение неправильно отформатировано или значение меньше нуля и т. Д. И т. Д.), После отображения сообщения об ошибке в окно сообщения, фокус перемещается к следующей ячейке. Есть ли способ, что, если есть сообщение об ошибке для определенной ячейки, тогда фокус будет установлен только на эту ячейку, генерирующую ошибку, он не будет перемещен в следующую ячейку? В событии dgView_CellEndEdit я попытался выбрать ячейку с помощью кода:

    dgView.Rows[e.RowIndex].Cells["ColumnName"].Value = "0.00";
    dgView.Select();
    dgView.CurrentCell.Selected = true;

Но это не работает. В событии dgView_SelectionChanged я использовал:

    dgView.CurrentCell = dgView[RequiredColumnIndex, RequiredRowIndex];
    dgView.BeginEdit(true);

Это тоже не поможет. Пожалуйста, помогите мне решить проблему.

1 Ответ

0 голосов
/ 26 марта 2012

Я думаю, вы должны использовать событие CellValidating для проверки и проверки. В случае неудачи некоторых проверок вы можете запросить сообщение об ошибке и установить e.Handled e.Cancel= false. Это сохранит фокус в текущей ячейке ошибки, пока вы не внесете необходимые исправления.

...