当我的用户点击numpad Enter键时,我如何发送一个Downkey键
本文关键字:何发送 Downkey 一个 用户 我的 numpad 键时 Enter | 更新日期: 2023-09-27 17:57:27
这纯粹是我的客户向我提出的可用性请求。
他们使用数据网格视图为学生输入成绩。因此,他们几乎进入僵尸模式,开始点击数字,他们告诉我,如果他们可以点击数字键盘输入键来集中下一个垂直选择,会更容易。
以下是我尝试使用的:
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{DOWN}");
}
}
不幸的是,它没有按预期工作。有时,它似乎多次按下该键,导致焦点向下滚动2、3或4个单元格,并真正动摇用户的焦点。
我怎样才能做到这一点,让我的客户满意?
private void datagridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
bindingsource.MoveNext();
}
}
试试这个-我已经测试过了,它可以工作。
private void datagridView12_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
int col = dataGridView12.CurrentCell.ColumnIndex;
int row = dataGridView12.CurrentCell.RowIndex;
if (row != dataGridView12.NewRowIndex)
{
if (col == (dataGridView12.Columns.Count - 1))
{
col = -1;
row++;
}
dataGridView12.CurrentCell = dataGridView12[col, row + 1];
}
e.Handled = true;
base.OnKeyDown(e);
}
}
您可以使用一个布尔值,该值在keyDown上设置为true,在keyUp上设置为false。
只运行sendKeys。当布尔值为true时发送。这样可以确保每次按键只触发一次事件。
我在其他语言中经常看到这样做,我不确定是否有更好的方法在C#中做到这一点。
当您在DataGridView中按下Enter键时(无论是否处于编辑模式),默认情况下(在.NET framework 3.5和4.0中),它会向下移动一个单元格。
这不是您最初需要的功能吗?
当用户按下回车键时,是否可以不将焦点设置在下一个文本框上?您可以使用TextBox.Focus()方法来移动下一个文本框。