elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Corregir un fallo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Corregir un fallo  (Leído 212 veces)
Meta


Desconectado Desconectado

Mensajes: 3.194



Ver Perfil WWW
Corregir un fallo
« en: 11 Junio 2020, 12:33 »

Buenas:



Usando el teclado solo las flechas y el Enter, en este programa puedo escribir nombre y se muestra en pantalla. Al escribir un nombre, pulso Enter y correctamente me lleva a la zona de > "Atrás". Si con la flecha derecha o izquierda me tiene que llevar a la parte de > Guardar.

El problema está que tiene que indicar con el caracter > en Guardar, y se ejecuta directamente, cosa que no debe ser. En la zona Atrás y Guardar solo se ejecuta si pulso Enter.

Dejo el código aquí como ejemplo.
Código
  1. using System;
  2.  
  3. namespace LCD_nombre_archivo_consola_03
  4. {
  5.    class Program
  6.    {
  7.        static string guardarNombre = "";
  8.        static int coordenadaX = 0;
  9.        static ConsoleKey key;
  10.  
  11.        static readonly char[] roALFANUMERICO = new char[] {
  12.            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P',
  13.            'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
  14.            'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y',
  15.            'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','.', ',', '-', '_', ':', ';',
  16.            '¿', '?', '(', ')', '[', ']', '{', '}','=', '$','&', '"', ' '};
  17.        static readonly int[] roINDICE_ARRAY = new int[] {
  18.            80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80 };
  19.        static readonly string[] TEXTO = new string[] { "ATRÁS", "GUARDAR" };
  20.        static int index = 0;
  21.        static void Main(string[] args)
  22.        {
  23.            // Título de la pantalla.
  24.            Console.Title = "Cambiar nombre";
  25.  
  26.            Inicio();
  27.        }
  28.  
  29.        #region Inico.
  30.        private static void Inicio()
  31.        {
  32.            // Tamaño de la ventana.
  33.            Console.SetWindowSize(20, 5);
  34.  
  35.            // Fondo verde.
  36.            Console.BackgroundColor = ConsoleColor.Blue;
  37.  
  38.            // Letras negras.
  39.            Console.ForegroundColor = ConsoleColor.White;
  40.  
  41.            Console.Clear();
  42.  
  43.            Console.SetCursorPosition(0, 0);
  44.            Console.Write("Nombre del relé 1:  ");
  45.            Console.SetCursorPosition(0, 1);
  46.            //Console.Write("AAAAAAAAAAAAAAAA");
  47.  
  48.            for (int i = 0; i < roINDICE_ARRAY.Length; i++)
  49.            {
  50.                Console.Write(roALFANUMERICO[roINDICE_ARRAY[i]]);
  51.            }
  52.  
  53.            Console.SetCursorPosition(2, 3);
  54.            Console.Write(TEXTO[0]); // ATRÁS.
  55.            Console.SetCursorPosition(12, 3);
  56.            Console.Write(TEXTO[1]); // GUARDAR.
  57.  
  58.            while (true)
  59.            {
  60.                Console.SetCursorPosition(coordenadaX, 1);
  61.                key = Console.ReadKey(true).Key;
  62.                switch (key)
  63.                {
  64.                    case ConsoleKey.RightArrow:
  65.                        if (coordenadaX < 15)
  66.                            coordenadaX++;
  67.                        break;
  68.  
  69.                    case ConsoleKey.LeftArrow:
  70.                        if (coordenadaX > 0)
  71.                            coordenadaX--;
  72.                        break;
  73.  
  74.                    case ConsoleKey.UpArrow:
  75.                        roINDICE_ARRAY[coordenadaX]++;
  76.                        if (roINDICE_ARRAY[coordenadaX] >= roALFANUMERICO.Length)
  77.                        {
  78.                            roINDICE_ARRAY[coordenadaX] = 0;
  79.                        }
  80.                        Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);
  81.                        break;
  82.  
  83.                    case ConsoleKey.DownArrow:
  84.                        roINDICE_ARRAY[coordenadaX]--;
  85.                        if (roINDICE_ARRAY[coordenadaX] < 0)
  86.                        {
  87.                            roINDICE_ARRAY[coordenadaX] = roALFANUMERICO.Length - 1;
  88.                        }
  89.                        Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);
  90.                        break;
  91.  
  92.                    case ConsoleKey.Enter:
  93.                        Console.SetCursorPosition(1, 3);
  94.                        Console.Write(">");
  95.  
  96.                        while (true)
  97.                        {
  98.                            key = Console.ReadKey(true).Key;
  99.  
  100.                            switch (key)
  101.                            {
  102.                                case ConsoleKey.RightArrow:
  103.                                case ConsoleKey.LeftArrow:
  104.                                    index = 1 - index;
  105.                                    break;
  106.  
  107.                                case ConsoleKey.UpArrow:
  108.                                case ConsoleKey.DownArrow:
  109.                                    Console.SetCursorPosition(coordenadaX, 1);
  110.                                    break;
  111.  
  112.                                case ConsoleKey.Enter:
  113.  
  114.                                    break;
  115.                            }
  116.  
  117.                            for (int a = 0; a < 2; a++)
  118.                            {
  119.                                Console.SetCursorPosition(1 + (10 * a), 3);
  120.                                if (a == index)
  121.                                    Console.Write(">");
  122.                                else
  123.                                    Console.Write(" ");
  124.                            }
  125.  
  126.                            if (index == 0)  // se pulsó Atrás
  127.                            {
  128.                                Atras();
  129.                                //break;  // vuelve a la edición de letras
  130.                            }
  131.                            else if (index == 1)  // se pulsó Guardar
  132.                            {
  133.                                Guardar();
  134.                            }
  135.                        }
  136.                }
  137.            }
  138.        }
  139.        #endregion
  140.  
  141.        private static void Atras()
  142.        {
  143.            Console.Clear();
  144.            Console.SetCursorPosition(0, 1);
  145.            Console.Write("HAS PULSADO ATRÁS   ");
  146.            Console.ReadKey(); // Pulse cualquier tecla para salir.
  147.        }
  148.  
  149.        private static void Guardar()
  150.        {
  151.            Console.Clear();
  152.            Console.SetCursorPosition(0, 1);
  153.            Console.Write("HAS GUARDADO       ");
  154.            for (int a = 0; a < roINDICE_ARRAY.Length; a++)
  155.                guardarNombre += roALFANUMERICO[roINDICE_ARRAY[a]].ToString();
  156.            Console.SetCursorPosition(0, 2);
  157.            Console.Write(guardarNombre);
  158.        }
  159.    }
  160. }

Un cordial saludos.


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Corregir velocidad de DVD (PAL) -4%
Multimedia
JimmyCool 0 1,058 Último mensaje 26 Abril 2008, 09:35
por JimmyCool
Ayuda, corregir un codigo :S
.NET (C#, VB.NET, ASP)
Edu 4 2,013 Último mensaje 20 Marzo 2011, 15:18
por Edu
[Como?] Corregir
PHP
VictorUriel 0 992 Último mensaje 5 Junio 2014, 23:25
por VictorUriel
Corregir código de C++
Programación C/C++
Jose_00 1 847 Último mensaje 8 Abril 2015, 03:17
por tremolero
Firefox y Tor Browser se actualizan para corregir el grave fallo de seguridad
Noticias
wolfbcn 0 588 Último mensaje 1 Diciembre 2016, 15:01
por wolfbcn
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines