private MenuItem MenuItemFromCursorKey(VirtualKey virtualKey) { const int NextMenuItem = 0; const int PrevMenuItem = 1; const int Nothing = 2; int action = Nothing; if (DropDownMenu) { if (virtualKey == VirtualKey.VK_UP) { action = PrevMenuItem; } else if (virtualKey == VirtualKey.VK_DOWN) { action = NextMenuItem; } } else { if (virtualKey == VirtualKey.VK_LEFT) { action = PrevMenuItem; } else if (virtualKey == VirtualKey.VK_RIGHT) { action = NextMenuItem; } } if (action == Nothing || !VisibleMenuItems.Any()) { return(null); } var currentMenuItem = ActiveMenuItem ?? VisibleMenuItems.First(); var index = _menuItems.IndexOf(currentMenuItem); var count = VisibleMenuItems.Count(); do { if (action == NextMenuItem) { index = (index + 1) % count; } else if (action == PrevMenuItem) { index = (index - 1 + count) % count; } }while (_menuItems[index].Separator); return(_menuItems[index]); }
public override void OnKeyUp(object sender, KeyEvent e) { if (!this._active) { this._active = true; if (VisibleMenuItems.Any() && !this.AllowNoSelection) { ActivateMenuItem((Screen)sender, VisibleMenuItems.First()); } } else { if (e.VirtualKey == VirtualKey.VK_MENU) { Deactivate((Screen)sender); } } }