关于DataGridView上下移动选中行出现的怪问题

somezy 2014-07-07 01:50:33
/// <summary>
/// DataGridView的按键事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvTempBillGK_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Enter:
break;
case Keys.Delete:
keyCode_Delete_Event();
break;
case Keys.Up:
keyCode_Up_Event();
break;
case Keys.Down:
keyCode_Down_Event();
break;
}
}

/// <summary>
/// Up快捷键事件
/// </summary>
private void keyCode_Up_Event()
{
if (dgvTempBillGK.Rows.Count != 0) //当DataGridView为空的时候不执行任何操作
{
int iRowIndex = dgvTempBillGK.CurrentRow.Index;
if (iRowIndex != 0) //当DataGridView当前行为第一行时不执行任何操作
{
dgvTempBillGK.Rows[iRowIndex - 1].Selected = true;
dgvTempBillGK.CurrentCell = dgvTempBillGK.Rows[iRowIndex-1].Cells[0];
}
//LoadTempBillMX();
}

}

/// <summary>
/// Down快捷键事件
/// </summary>
private void keyCode_Down_Event()
{
if (dgvTempBillGK.Rows.Count != 0) //当DataGridView为空的时候不执行任何操作
{
int iRowIndex = dgvTempBillGK.CurrentRow.Index;
if (iRowIndex != (dgvTempBillGK.Rows.Count - 1)) //当DataGridView当前行为最后一行时不执行任何操作
{
dgvTempBillGK.Rows[iRowIndex + 1].Selected = true;
dgvTempBillGK.CurrentCell = dgvTempBillGK.Rows[iRowIndex + 1].Cells[0];
}
//LoadTempBillMX();
}
}



如上代码,在DataGridView的KeyDown事件中,如果点击的是Up键,则执行keyCode_Up_Event(),也即是说将DataGridView上移一行,如果点击的是Down键,则执行keyCode_Down_Event(),即将DataGridView下移一行。

现在出现的诡异现象是,无论我是点击Up键还是Down键,它都不是逐行给我选中,而是出现跳行选中。举例来说,当前选中行为第一行,在我按下Down键后,它给我选中的是第三行,而不是第二行。然后再按一次Down键,选中的是第五行,而不是第四行。

请问各位这个是什么问题?如何解决才能让我逐行选中?
...全文
175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-07-07
  • 打赏
  • 举报
回复
换成W,S还会跟本身单元格输入冲突 还是改成组合键吧 比如ctrl+up
於黾 2014-07-07
  • 打赏
  • 举报
回复
因为在第一行的时候,按"下",应该选中第二行 但是你在选中之前先执行了下移操作,变成选中第二行,然后又执行了本身的光标下移,变成选中了第三行 快捷键在设置的时候最好不要跟系统默认的键盘冲突,否则问题多多 你换成W,S上下移动试试.
_z3422_ 2014-07-07
  • 打赏
  • 举报
回复
不写代码呢 按这些键看看~
somezy 2014-07-07
  • 打赏
  • 举报
回复
~~~~(>_<)~~~~ ,可怜没人回复,继续等待中。。。。。。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧