我的winforms技能有点生疏。我正在使用BindingSource
a DataGridView
。在我想选择按需要工作的下一个/上一个记录KeyDown
。DataGridView
Keys.Down
如果用户在选择最后一个项目时点击,我想选择第一个,如果他在选择第一个项目时点击,我想选择最后Keys.Up
一个。但那时什么也没有发生。
这是代码:
private void Grid_Keydown(Object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
previousItem();
else if (e.KeyCode == Keys.Down)
nextItem();
}
private void previousItem()
{
BindingSource bs = null;
switch (this.Type) // a custom enum
{
case AdminType.Channel:
bs = channelBindingSource;
break;
default:
break;
}
if (bs.Position - 1 < 0)
bs.MoveLast();
else
bs.MovePrevious();
}
private void nextItem()
{
BindingSource bs = null;
switch (this.Type)
{
case AdminType.Channel:
bs = channelBindingSource;
break;
default:
break;
}
if (bs.Position + 1 >= bs.Count)
bs.MoveFirst();
else
bs.MoveNext();
}
请注意,bs.MoveFirst()
/bs.MoveLast()
被正确调用但没有任何反应。
编辑DataGridView
:有趣的是,当我从按钮(上一个/下一个)而不是's触发它时,它按预期工作OnKeyDown
,有什么想法吗?