私のwinformsスキルは少し錆びています。を使用しBindingSource
てい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
、何かアイデアはありますか?