Salto de línea de palabras

Iniciado por Meta, 30 Diciembre 2021, 23:35 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

Quiero saber si es posible hacerlo con muchos menos códigos.

Código (csharp) [Seleccionar]
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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/