- Yo lo he implementado así:

- Bajo la premisa de guardar la coordenada de cada caracter cambiante (">" "X" "5") e ir restaurando/cambiando dicha posición +1 o -1 según corresponda.
- Otra forma que vi en otro mensaje del foro era re-escribiendo todo el menú con los cambios adecuados.
- No soy desarrollador en C#, haber si me leo unos manuales sencillos para aplicar funciones, clases y esas cosas, ya tengo varios libros a la mano XD. Lo más para probar el IDE VS Express 2008 Sp1 que la verdad no me está convenciendo mucho, le falta más inteligencia. También he estado revisando métodos para compilar sin tener Visual Studio, tratar de instalar .Net Framework > 6.2 en mi Win8 ya que no soporta versiones más recientes :-/
Código
using System; namespace LCD { class Program { static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Black; Console.SetWindowSize(21, 5); Console.CursorVisible = false; ConsoleKey key; int selPosY = 0; int volPosX = 9; int briPosX = 9; Console.Clear(); Console.WriteLine(" Brillo:-------- "); Console.WriteLine(" Volum.:-------- "); Console.WriteLine(" "); Console.WriteLine(" Atrás Menú "); Console.SetCursorPosition(0, selPosY); Console.Write(">"); Console.SetCursorPosition(briPosX, 0); Console.Write("X"); Console.SetCursorPosition(volPosX, 1); Console.Write("X"); Console.SetCursorPosition(18, 0); Console.Write(briPosX - 9); Console.SetCursorPosition(18, 1); Console.Write(volPosX - 9); do { key = Console.ReadKey(true).Key; if (key == ConsoleKey.UpArrow && selPosY - 1 >= 0) { Console.SetCursorPosition(0, selPosY); Console.Write(" "); Console.CursorTop--; selPosY = Console.CursorTop; Console.SetCursorPosition(0, selPosY); Console.Write(">"); } if (key == ConsoleKey.DownArrow && selPosY + 1 <= 1) { Console.SetCursorPosition(0, selPosY); Console.Write(" "); Console.CursorTop++; selPosY = Console.CursorTop; Console.SetCursorPosition(0, selPosY); Console.Write(">"); } if (key == ConsoleKey.LeftArrow) { if (selPosY == 0 && briPosX - 1 >= 9) { Console.SetCursorPosition(briPosX, 0); Console.Write("-"); Console.CursorLeft -= 2; briPosX = Console.CursorLeft; Console.Write("X"); Console.SetCursorPosition(18, 0); Console.Write(briPosX - 9); } if (selPosY == 1 && volPosX - 1 >= 9) { Console.SetCursorPosition(volPosX, 1); Console.Write("-"); Console.CursorLeft -= 2; volPosX = Console.CursorLeft; Console.Write("X"); Console.SetCursorPosition(18, 1); Console.Write(volPosX - 9); } } if (key == ConsoleKey.RightArrow) { if (selPosY == 0 && briPosX + 1 <= 16) { Console.SetCursorPosition(briPosX, 0); Console.Write("-"); briPosX = Console.CursorLeft; Console.Write("X"); Console.SetCursorPosition(18, 0); Console.Write(briPosX - 9); } if (selPosY == 1 && volPosX + 1 <= 16) { Console.SetCursorPosition(volPosX, 1); Console.Write("-"); volPosX = Console.CursorLeft; Console.Write("X"); Console.SetCursorPosition(18, 1); Console.Write(volPosX - 9); } } } while (key != ConsoleKey.Escape); } } }