Как предотвратить переход к следующей строке после редактирования DataGridViewTextBoxColumn и нажатия EnterKey?

Я работаю над программой с DataGridViews . который может редактироваться пользователем. Когда пользователь закончил вводить числа, ...

Я работаю над программой с DataGridViews . который может редактироваться пользователем. Когда пользователь закончит вводить числа, ...

Я работаю над программой с DataGridViews . В одном DatagridView есть DataGridViewTextBoxColumn , который может редактироваться пользователем. Когда пользователь закончит вводить числа, он нажимает клавишу ВВОД на клавиатуре. Теперь DataGridView выполняет все свои События , а после всех событий , проблема в последнюю очередь.

Все готово, и Windows собирается выбрать следующий DataGridViewRow , и я не могу предотвратить это.

Я пробовал

if (e.KeyData == Keys.Enter) e.SuppressKeyPress = true; // or e.Handled 

почти во всех обнаруженных мной событиях. К сожалению, мне удалось предотвратить нажатие клавиши ENTER только тогда, когда DataGridViewTextBoxColumn не находится в режиме редактирования.

Вот мой метод, чтобы найти ENTER при редактировании

Добавление события

private void dgr_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    e.Control.KeyPress += new KeyPressEventHandler(dgr_KeyPress_NumericTester);
}

И это событие принимает только числовой ввод.

private void dgr_KeyPress_NumericTester(object sender, KeyPressEventArgs e)
{
    if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8) e.Handled = true;
}

Чтобы объяснить подробно:

Когда пользователь вводит значение, которое имеет некоторые зависимости, я хотел бы дать другому элементу управления фокус, чтобы он использовался для исправления зависимостей.

Я также пробовал это с VerifiedControl.Focus () , но последний "ввод" будет последним в представлении.

Кто-нибудь знает, как это предотвратить?

12
задан Asieh hojatoleslami 30 December 2014 в 07:06
поделиться