Buenas.
En modo consola C#.
Al escribir en el teclado al llegar al carácter 20, sigo escribiendo y me sale el renglón abajo. Así sucesivamente.
¿Es posible hacerlo sin pulsar Enter?
Que lo haga solo.
Felices fiestas 2021.
Quiero saber si es posible hacerlo con muchos menos códigos.
using System;
namespace Return_a_patir_del_caracter_20_Consola_01
{
internal class Program
{
static void Main(string[] args)
{
#region Configuración ventana.
// Título de la ventana.
Console.Title = "Return a partir del caracter 20";
// Tamaño de la ventana, x, y.
Console.SetWindowSize(70, 25);
// Color de fondo.
Console.BackgroundColor = ConsoleColor.Gray;
// Color de las letras.
Console.ForegroundColor = ConsoleColor.Black;
// Limpiar pantalla y dejarlo todo gris.
Console.Clear();
// Visible el cursor.
Console.CursorVisible = true;
#endregion
Console.WriteLine("Hello World!");
string line = ReadLine20CharByLine();
}
static string ReadLine20CharByLine()
{
string result = "";
ConsoleKeyInfo key;
int count = 0;
while ((key = Console.ReadKey()).Key != ConsoleKey.Enter)
{
if (key.Modifiers == (ConsoleModifiers.Control | ConsoleModifiers.Shift | ConsoleModifiers.Alt))
{
continue; // ignora caracteres si viene con algún modificador
}
if (key.Key == ConsoleKey.Backspace) // si se pulsa BackSpace
{
if (result.Length > 0)
{
if (count == 0) // si estás al principio de un renglón que no es el 1ro
{ // borra el último caracter del renglón anterior
Console.SetCursorPosition(20, Console.CursorTop - 1);
Console.Write("\b \b");
count = 19;
}
else // si no, borra el caracter y retrocede en la misma linea
{
Console.Write(" \b");
count--;
}
result = result.Substring(0, result.Length - 1);
}
}
else // si no se pulsó BackSpace ni ninguna tecla con Modifier
{ // se suma el caracter a result
result += key.KeyChar.ToString();
count++;
if (count == 20)
{
count = 0;
Console.SetCursorPosition(0, Console.CursorTop + 1);
}
}
}
return result;
}
}
}
Feliz fin e año 2021.