private bool SkipGroupHeaderIfRequired(KeyEventArgs e)
{
if(!this.ShowGroups) return false;
if(this.MultiSelect) return false;
ListViewItem lvi = this.FocusedItem;
if(lvi != null)
{
ListViewGroup g = lvi.Group;
ListViewItem lviChangeTo = null;
if((e.KeyCode == Keys.Up) && IsFirstLastItemInGroup(g, lvi, true))
lviChangeTo = (GetNextLvi(g, true) ?? lvi); // '??' for top item
else if((e.KeyCode == Keys.Down) && IsFirstLastItemInGroup(g, lvi, false))
lviChangeTo = (GetNextLvi(g, false) ?? lvi); // '??' for bottom item
if(lviChangeTo != null)
{
foreach(ListViewItem lviEnum in this.Items)
lviEnum.Selected = false;
lviChangeTo.Selected = true;
lviChangeTo.Focused = true;
EnsureVisible(lviChangeTo.Index);
e.Handled = true;
return true;
}
}
return false;
}