public void MoveUp() { var selectedCategory = GetSelectedAchievementCategory(); var node = tvwAchievementCategories.SelectedNode.Parent; TreeNodeCollection nodes = null; if (node != null && node.Nodes != null) { nodes = node.Nodes; } else { nodes = tvwAchievementCategories.Nodes; } var categories = nodes.Cast <AchievementCategoryTreeNode>().Select(x => x.AchievementCategory).ToList(); var filteredIndex = categories.FindIndex(x => x == selectedCategory); if (filteredIndex == 0) // Already top element so can't go up { return; } dataManager.Swap(categories[filteredIndex], categories[filteredIndex - 1]); RefreshTreeView(); }