visual - c#console, Console.Clear problema
hola mundo c# visual studio 2017 (3)
¿No puedes borrar y luego volver a escribir el logotipo y la matriz? La consola no está diseñada para ser utilizada como usted describe.
Estoy escribiendo un programa de consola en C #.
¿Hay alguna manera de que pueda usar Console.Clear () para borrar solo ciertas cosas en la pantalla de la consola?
Aquí está mi problema:
Tengo un logotipo (lo puse en la pantalla usando Console.WriteLine ()) y una matriz 2d que quiero mantener constante y borrar todo debajo de él.
Podría usar un método personalizado para borrar partes de la pantalla ...
static void Clear(int x, int y, int width, int height)
{
int curTop = Console.CursorTop;
int curLeft = Console.CursorLeft;
for (; height > 0;)
{
Console.SetCursorPosition(x, y + --height);
Console.Write(new string('' '',width));
}
Console.SetCursorPosition(curLeft, curTop);
}
Editar : La respuesta aquí muestra cómo puedes manipular la consola mucho más poderosamente de lo que yo sabía. Lo que originalmente escribí aún se aplica, y podría ser útil si no tiene estos recursos disponibles, tal vez en un idioma diferente.
Almacene el logotipo y el estado generado inicialmente de la matriz y luego, cuando borre la consola, escriba de nuevo los valores guardados, en lugar de usar el mismo procedimiento de generación.
Como han dicho otros, la consola no está diseñada para este tipo de operación, por lo que debe evitarla.
Otra opción podría ser escribir en una cadena o en un generador de cadenas en lugar de hacerlo en la consola directamente, luego, cada vez que la consola necesite actualizarse, borre su salida y escriba la cadena o secuencia de "salida" en la consola. Esto le permitiría realizar operaciones de cadena / expresiones regulares, etc. en su texto de salida para eliminar / dejar cosas específicas en su lugar.
Sin embargo, esto implicaría una gran sobrecarga de la consola ya que terminaría reimprimiendo todo el resultado en cada actualización.
Una solución para ESO podría ser mantener una representación de cadena / secuencia paralela de lo que escribe en la consola, luego, cuando necesite borrarla, puede borrar la representación de cadena, borrar la consola y luego volver a escribir la cadena en la consola. De esta forma, solo agregaría una operación de escritura adicional a su escritura habitual, y el mayor trabajo adicional ocurriría solo cuando borre la consola.
Hagas lo que hagas, escribir en la consola nunca es una operación rápida, y si estás haciendo muchas operaciones donde se escriben cosas en la consola, puede ser un lastre significativo para el rendimiento de tu aplicación.