Это настоящий вызов, который я привожу здесь для вас.Решите это, если можете.
Клавиша ввода на Datagridview Это хорошая идея?Или это возможно для любого тела здесь, чтобы работать в соответствии со следующим условием?.
Если нет, Datagridview Control бесполезен при нажатии клавиши ввода.
У меня есть следующие пользовательские DGV:
public class MyDataGridView : DataGridView
{
protected override bool ProcessDialogKey(Keys keyData)
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
Tab(keyData);
return true;
}
return base.ProcessDialogKey(keyData);
}
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Tab(e.KeyData);
return true;
}
return base.ProcessDataGridViewKey(e);
}
private void Tab(Keys KeyData)
{
Point cca = CurrentCellAddress;
bool Forward = ((KeyData & Keys.Shift) != Keys.Shift);
if (Forward)
if (cca.Y == Rows.Count - 1) // last row?
if (cca.X == Columns.Count - 1) // last column?
ToNextControl(Forward);
else
ProcessTabKey(KeyData);
else
ProcessTabKey(KeyData);
else
if (cca.Y == 0) // first row?
if (cca.X == 0) // first column?
ToNextControl(Forward);
else
ProcessTabKey(KeyData);
else
ProcessTabKey(KeyData);
}
/// <summary>
/// Go to the next control, forward or backword. This does not support
/// wrapping from the first to the last or the last to the first.
/// </summary>
/// <param name="Forward">Whether to go forward</param>
private void ToNextControl(bool Forward)
{
Control c = Parent.GetNextControl(this, Forward);
while (c != null && !c.TabStop) // get next control that is a tabstop
c = Parent.GetNextControl(c, Forward);
if (c != null)
c.Select();
}
}
То же самое хорошо работает в обычном режиме, оно позволяет фокусироваться на следующем элементе управления при нажатии клавиши ввода, но это не работает, если вы установите AllowUserToAddRows = false в режиме привязки к данным.Точная проблема возникает, когда вы редактируете значение ячейки в последнем столбце и нажимаете клавишу ввода, это не позволяет установить фокус на следующем элементе управления.
Как преодолеть это?как решить проблему?