Winforms becerilerim biraz paslı. DataGridView
için BindingSource
kullanıyorum. DataGridView
'un KeyDown
numaralı sayfasında, istediğiniz gibi çalışan bir sonraki/bir önceki kaydı seçmek istiyorum.BindingSource MoveFirst/MoveLast çalışmıyor
Kullanıcı, son öğe seçildiğinde Keys.Down
sonucuna ulaşırsa ilk seçmeyi ve ilk öğe seçildiğinde Keys.Up
sonucunu seçerse sonuncuyu seçmek istiyorum. Ama o zaman hiçbir şey olmaz. bs.MoveFirst()
/bs.MoveLast()
doğru denir ama hiçbir şey olmuyor olduğunu
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();
}
Not:
İşte kod.
Düzenleme: İlginç, beklendiği gibi ben bir düğmeden bu tetiklemek zaman çalışır (önceki/sonraki) yerine DataGridView
'ın OnKeyDown
, herhangi bir fikir?
bs.EndEdit(); moveFirst/Last? – NDJ
@NDJ'den sonra şunu deneyebilir misiniz: Teşekkürler, ama işe yaramıyor. –
belki de ızgaradaki bir şey bs konumunu geçersiz kılar. "KeyUp" gibi bir "daha sonra" olayını kullanmayı deneyin. –