这纯粹是出于我的客户问我的可用性要求。
他们使用datagridview为学生输入成绩。因此他们几乎进入僵尸模式并开始使用数字,他们告诉我,如果他们可以点击小键盘输入键以使下一个垂直选择聚焦,那会更容易。
以下是我尝试使用的内容:
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{DOWN}");
}
}
不幸的是,它没有按预期工作。有时它似乎会多次触发该键,导致焦点向下滚动2或3或4个单元格并真正震动用户的注意力。
如何让这项工作让客户满意?
答案 0 :(得分:1)
private void datagridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
bindingsource.MoveNext();
}
}
答案 1 :(得分:1)
试试这个 - 我测试了它并且它有效。
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);
}
}
答案 2 :(得分:0)
您可以使用在keyDown上设置为true的布尔值,并在keyUp上设置为false。
仅当布尔值为true时才运行sendKeys.Send。这应确保每次按键时只触发一次事件。
这通常是我在其他语言中看到的,我不确定是否有更好的方法在C#中完成。
答案 3 :(得分:0)
当您在DataGridView中按 Enter 键时(无论是否处于编辑模式),默认情况下会关闭一个单元格(在.NET framework 3.5和4.0中)。
首先不是你需要的功能吗?
答案 4 :(得分:-1)
当用户按下回车键时,您是否可以将焦点设置在下一个文本框中? 您可以使用TextBox.Focus()方法移动下一个文本框。