Я работаю над программой с DataGridViews
.В одном DatagridView
есть DataGridViewTextBoxColumn
, который может редактироваться пользователем.Когда пользователь заканчивает вводить цифры, он нажимает клавишу ВВОД на клавиатуре.Теперь DataGridView
делает все свои Events
, а после Events
последнее - проблема.
Все сделано, и Windows собирается выбрать следующий DataGridViewRow
, и я не могу этого предотвратить.
Я пытался
if (e.KeyData == Keys.Enter) e.SuppressKeyPress = true; // or e.Handled
почти в каждом найденном событии.К сожалению, я смог предотвратить клавишу ВВОД только тогда, когда 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;
}
Чтобы объяснить подробно:
Когда пользователь вводит значение, которое имеет некоторые зависимости, я быЯ хотел бы дать другому элементу управления фокус, поэтому он используется для исправления зависимостей.
Я также пробовал это с DependingControl.Focus()
, но последний "ввод" будет последним в представлении.
Кто-нибудь знает, как это предотвратить?