2015-03-17 3 views
0

Я пытаюсь проверить вход пользователя в ячейку сетки. Я могу проверить входные данные, но мне нужно сфокусироваться на одной и той же ячейке, потому что пользователь должен ввести правильное значение снова. Но фокус переходит в ячейку ниже, если пользователь нажимает кнопку ввода, если табуляция ударяется, она переходит в ячейку следующей к нему. Вы можете видеть мою почти выполненную функцию ниже,как правильно проверить ячейку сетки

private void gv_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e) 
{ 
    decimal amount = (decimal)gv.GetRowCellValue(e.RowHandle, gv.Columns["AMOUNT"]); 
    decimal max_kg = (decimal)gv.GetRowCellValue(e.RowHandle, gv.Columns["MAX_KG"]); 

    if (amount > max_kg) { 
     gv.SetRowCellValue(e.RowHandle, gv.Columns["AMOUNT"], 0); 
     XtraMessageBox.Show("Girilen miktar MAX.KG'dan büyük olamaz."); 
     gv.FocusedRowHandle = e.RowHandle; 
    } 
} 

Как я могу заставить его сфокусироваться на той же самой ячейке, чтобы повторно ввести сумму?

Должен ли я использовать другое событие для проверки?

+0

Набор 'e.Valid = false', чтобы предотвратить проверка завершена и позволяет пользователю перейти к следующей строке/столбцу. –

+0

Я пробовал e.Valid, но он тоже этого не делает. Появляется только сообщение «MessageBox.YesNo», в котором говорится: «Вы хотите ввести допустимое значение?». Если вы нажмете «НЕТ», то основное внимание будет уделено следующей ячейке –

ответ

1

Согласно DevExpress documentation on Validating Rows, вы должны быть настройками e.Validate = false в ValidateRow событии и обрабатывать InvalidRowException события

Работы с InvalidRowException события предотвратит окно сообщения об ошибке придумывает, что дает пользователю возможность «Да» или «Нет».

private void gv_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e) 
{ 
    //Suppress displaying the error message box 
    e.ExceptionMode = ExceptionMode.NoAction; 
} 

Пожалуйста, прочитайте документацию, связанную для получения дополнительной информации относительно обработки с компонентами DevExpress ошибки (что не по теме этого ответа, но хорошо знает)

Смежные вопросы