public override object MoveNextItem(int direction, UInt64 id = 0, bool move = true, JumpItemStyle style = JumpItemStyle.MoveTo) { if (programList.Count == 0) { return(null); } var list = programList.Values.OrderBy(item => (int)(item.LeftPos / this.EpgStyle().ServiceWidth) * 1e6 + item.TopPos + item.Width / this.EpgStyle().ServiceWidth / 100).ToList(); int idx = list.FindIndex(item => item.Data.CurrentPgUID() == id); idx = ViewUtil.GetNextIdx(ItemIdx, idx, list.Count, direction); if (move == true) { programView.ScrollToFindItem(list[idx], style); } if (move == true) { ItemIdx = idx; } return(list[idx] == null ? null : list[idx].Data); }