using System;using System.Diagnostics; namespace TestLog{ class Program { static void Main() { Menu(); } static void Menu() { char opcion; do { Console.Clear(); Console.WriteLine("\t************************"); Console.WriteLine("\t* 1- OPCION1 *"); Console.WriteLine("\t* 2- OPCION2 *"); Console.WriteLine("\t* ..- OPCION.. *"); Console.WriteLine("\t* ..- OPCION.. *"); Console.WriteLine("\t* N - Configurar Parametr *"); Console.WriteLine("\t************************"); Console.WriteLine("\t* [0]- Salir *"); Console.WriteLine("\t************************"); Console.Write("Opcion: "); do { opcion = Console.ReadKey(true).KeyChar; } while(opcion <'0' || opcion > 'N'); //N cualquier valor dependiendo del menu Console.WriteLine(opcion + "\n"); switch (opcion) { case '1': Process.Start("cmd.exe", "dir"); break; case '2': Process.Start("cmd.exe", "dir"); break; case '3': funcionM(); break; } }while (opcion!='0'); } static void funcionM() { char opcion2; do { Console.Clear(); Console.WriteLine("\t************************"); Console.WriteLine("\t* Configuracion Param *"); Console.WriteLine("\t************************"); Console.WriteLine("\t* [1]- Opcion1 *"); Console.WriteLine("\t* [2]- OPCION2 *"); Console.WriteLine("\t* [3]- OPCION3 *"); Console.WriteLine("\t* [..]- OPCION.. *"); Console.WriteLine("\t* [..]- OPCION.. *"); Console.WriteLine("\t* [10]- Volver al menu prin *"); Console.WriteLine("\t* [N]- OPCIONN *"); Console.WriteLine("\t************************"); Console.Write("Opcion: "); do { opcion2 = Console.ReadKey(true).KeyChar; } while( (opcion2 <'0') || (opcion2 > '10')); //ESTO se que está mal, pero no sé cómo hacer //para que me tome los valores de 2 cifras. El error que me devuelve es: //Demasiados caracteres en literal de caracter - CS012 Console.WriteLine(opcion2 + "\n"); switch(opcion2) { case '1': //Aqui me da problemas con el Case, me dice que 1 ya fue usado antes ... :S // El error que me devuelve es: Demasiados caracteres en literal de caracter - CS012 Process.Start("cmd.exe", "dir"); break; case '2': Process.Start("cmd.exe", "dir"); break; case '12': Menu(); break; } }while(!='10'); //} } /*static void Salir() { Console.Clear(); Console.WriteLine("Salir"); }*/ }}
using System;using System.Diagnostics;namespace TestLog{ class Program { static void Main() { Menu(); } static void Menu() { char opcion; do { Console.Clear(); Console.WriteLine("\t************************"); Console.WriteLine("\t* 1- OPCION1 *"); Console.WriteLine("\t* 2- OPCION2 *"); Console.WriteLine("\t* 3- Configurar Parametr *"); Console.WriteLine("\t************************"); Console.WriteLine("\t* [0]- Salir *"); Console.WriteLine("\t************************"); Console.Write("Opcion: "); do { opcion = Console.ReadKey(true).KeyChar; } while (opcion < '0' || opcion > '3'); //N cualquier valor dependiendo del menu Console.WriteLine(opcion + "\n"); switch (opcion) { case '1': Process.Start("cmd.exe", "dir"); break; case '2': Process.Start("cmd.exe", "dir"); break; case '3': funcionM(); break; } } while (opcion != '0'); } static void funcionM() { char opcion2; do { Console.Clear(); Console.WriteLine("\t************************"); Console.WriteLine("\t* Configuracion Param *"); Console.WriteLine("\t************************"); Console.WriteLine("\t* [1]- Opcion1 *"); Console.WriteLine("\t* [2]- OPCION2 *"); Console.WriteLine("\t* [3]- OPCION3 *"); Console.WriteLine("\t* [0]- Volver al menu prin *"); Console.WriteLine("\t************************"); Console.Write("Opcion: "); do { /* Readkey solo admite una sola tecla, te recomiendo dos formas de hacerlo en caso de que necesites mas de 10 opciones 1. utiliza letras para las opciones superiores a 10 (A, B, C, etc.) 2. En lugar de usar Console.Readkey utiliza Console.Readln(), Ejemplo: string opcion2; opcion2 = Console.ReadLine(); switch (opcion2) { // Utiliza "" en lugar de '' case "10": Console.WriteLine("\t* [10]- Volver al menu prin *"); break; } */ opcion2 = Console.ReadKey(true).KeyChar; } while ((opcion2 < '0') || (opcion2 > '3')); //ESTO se que está mal, pero no sé // cómo hacer para que me tome los valores de 2 cifras. El error que me devuelve es: // Demasiados caracteres en literal de caracter - CS012 Console.WriteLine(opcion2 + "\n"); switch (opcion2) { case '1': //Aqui me da problemas con el Case, me dice que 1 ya fue usado antes ... //:S El error que me devuelve es: Demasiados caracteres en literal de caracter - CS012 Process.Start("cmd.exe", "dir"); break; case '2': Process.Start("cmd.exe", "dir"); break; case '3': break; } } while (opcion2 != '0'); //} } /*static void Salir() { Console.Clear(); Console.WriteLine("Salir"); }*/ }}