我有一个datagridview(dgv)并为它设置了一些快捷方式 . 我想在dgv selectedIndexChanged
时得到我想要的单元格值 . 这就是我为 selectedIndexChanged
事件所做的事情:
if (dgv.Rows.Count > 0)
{
lblId.Text = dgv.CurrentRow.Cells[0].Value.ToString();
lblStaffName.Text = dgv.CurrentRow.Cells[1].Value.ToString();
lblStock.Text = dgv.CurrentRow.Cells[4].Value.ToString();
}
并为我的dgv定义了一些快捷方式 .
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Alt | Keys.Down))
{
if (dgv.Rows.Count > 0)
{
dgv.Focus();
if (dgv.CurrentRow.Index < (dgv.Rows.Count - 1))
{
dgv.Rows[dgv.CurrentRow.Index + 1].Selected = true;
dgv.FirstDisplayedScrollingRowIndex = dgv.CurrentRow.Index + 1;
pnl.BackColor = Color.FromKnownColor(KnownColor.Lime);
}
}
}
}
NOTE: 如你所见,当我按 Alt+keyDown
时,dgv索引会增加并更改为更多一步 .
我的问题是当我按 Alt+keyDown
索引更改并选择 but the value won't get new value until I press again Alt+keyDown twice!
有没有必须在那里编写代码的事件?谢谢 :)
1 回答
要更改数据绑定
DataGridView
中的选定索引,最好以这种方式依赖绑定上下文:但是如果
DataGridView
不是数据绑定或仅仅是为了学习目的而你想修复你的代码,你可以编写这样的代码:我还删除了
dgv.Focus()
,因为当您使用快捷方式在行之间导航时,您不需要焦点,但如果您因任何原因需要它,请使用它 .