|
121
|
Programación / .NET (C#, VB.NET, ASP) / ¿Por qué solo puedo escribir 255 caracteres como máximo?
|
en: 12 Junio 2019, 07:00 am
|
Buenas: Con este programa que es enviar email, en el mensaje solo puedo escribir hasta 255 letras o caracteres, lo mismo para el asunto. ¿Cuál es el motivo de la causa? Su código es este. using System; using System.Net.Mail; using System.Text; using System.Net; namespace Enviar_e_mail_Consola_04_cs { class Program { static void Main(string[] args) { string usuario, contraseña, destinatario, asunto, mensaje; // Título de la ventana. Console.Title = "Enviar e-mail con Consola C#"; // Tamaño ventana consola. Console.WindowWidth = 80; // X. Ancho. Console.WindowHeight = 40; // Y. Alto. // Tamaño del cursor. Del 1 al 100. Console.CursorSize = 50; // Título del programa. Console.WriteLine("\t\t----------------------------------------"); Console.WriteLine("\t\t\tEnviar Correo Electrónico"); Console.WriteLine("\t\t----------------------------------------"); try { Console.WriteLine("\n"); Console.Write("\t\tIngresar tu correo electrónico: "); usuario = Console.ReadLine(); Console.Write("\t\tIntroducir contraseña: "); contraseña = LeerPassword(); Console.Write("\t\tDestinatario: "); destinatario = Console.ReadLine(); Console.Write("\t\tAsunto: "); asunto = Console.ReadLine(); Console.Write("\t\tMensaje: "); mensaje = Console.ReadLine(); MailMessage correo = new MailMessage (usuario, destinatario, asunto, mensaje ); SmtpClient servidor = new SmtpClient ("smtp.gmail.com") { Port = 587 }; NetworkCredential credenciales = new NetworkCredential (usuario, contraseña ); servidor.Credentials = credenciales; servidor.EnableSsl = true; Console.WriteLine("\t\tEnviando correo..."); servidor.Send(correo); Console.WriteLine("\t\tCorreo enviado satisfactoriamente."); correo.Dispose(); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine("\t\t" + ex.Message); Console.WriteLine("\t\tNo se ha enviado el correo."); Console.ReadKey(); } } // A la hora de introducir la contraseña, se sustituye por asterístos (*) en pantalla. public static string LeerPassword() { ConsoleKeyInfo cki; StringBuilder sb = new StringBuilder (); int contador = 0; do { cki = Console.ReadKey(true); if (cki.Key != ConsoleKey.Enter) { sb.Append(cki.KeyChar); if (contador < 4) { Console.Write("*"); } contador++; } else { break; } } while (true); Console.WriteLine(); return sb.ToString(); } } }
Salu2. camaradas.
|
|
|
122
|
Programación / .NET (C#, VB.NET, ASP) / ¿Cómo puedo leer el mensaje de un email y mostrarlo en la consola?
|
en: 11 Junio 2019, 01:23 am
|
Hola: Me funciona el código, veo datos menos el que me interesa, precisamente no me sale el contenido del mensaje, es el que quiero que me muestre en pantalla. El programa solo lee los últimos email nuevos. (A veces tienes que actualizar varias veces tu navegador para que se muestre la captura).Código C#:using System; using System.Collections.Generic; using OpenPop.Pop3; namespace Recibir_email_Consola_01 { class Program { static void Main(string[] args) { // Título de la ventana. Console.Title = "Recibir e-mail con Consola C#"; // Tamaño ventana consola. Console.WindowWidth = 100; // X. Ancho. Console.WindowHeight = 40; // Y. Alto. Console.WriteLine("\t\t----------------------------------------"); Console.WriteLine("\t\t\tRecibir Correo Electrónico"); Console.WriteLine("\t\t----------------------------------------"); try { ConnectPop3 oC = new ConnectPop3 (); List<OpenPop.Mime.Message> lstMessages = oC.GetMessages(); if (lstMessages != null) { foreach (var oMessage in lstMessages) { Console.WriteLine(oMessage.Headers.Subject); // Asunto. Console.WriteLine(oMessage.Headers.From); // Email del que te envió el mensaje. Console.WriteLine(oMessage.Headers.ContentTransferEncoding); //out: SevenBit. Console.WriteLine(oMessage.Headers.ContentType); Console.WriteLine(oMessage.Headers.Date); // Fecha larga. Console.WriteLine(oMessage.Headers.DateSent); // Fecha corta. Console.WriteLine(oMessage.Headers.Importance); // Out: Normal. Console.WriteLine(oMessage.Headers.MimeVersion); // Versión. Console.WriteLine(oMessage.Headers.MessageId); } } Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas. Console.WriteLine("FIN DEL PROGRAMA."); Console.ReadKey(); // Pulse cualquier tecla para salir. } catch (Exception e) { Console.WriteLine(e.ToString()); } } } public class ConnectPop3 { public string email = "celltium@gmail.com"; public string contraseña = "g0923490xgh0945g450Xj4025g"; public int puerto = 995; public bool usarSLL = true; public string Hostame = "pop.gmail.com"; public List<OpenPop.Mime.Message> GetMessages() { using (Pop3Client oClient = new Pop3Client ()) { oClient.Connect(Hostame, puerto, usarSLL); oClient.Authenticate(email, contraseña); int messageCount = oClient.GetMessageCount(); List <OpenPop .Mime.Message> lstMesages = new List <OpenPop .Mime.Message>(messageCount ); for (int i = messageCount; i > 0; i--) { lstMesages.Add(oClient.GetMessage(i)); } return lstMesages; } } } }
Pensé que leer el mensaje es ete código pero veo que no. Console.WriteLine(oMessage.Headers.MessageId);
http://rfinochi.github.io/pop3dotnet/¿Cómo puedo ver el mensaje del email? Saludos.
|
|
|
123
|
Programación / Programación C/C++ / Quiero saber si es posible transformas estas clases en dll y importarla
|
en: 10 Junio 2019, 21:04 pm
|
Hola: Quiero saber si estas clases se puede transformar por llamarlo de alguna manera en una librería dll y que se pueda llamar y usarla en cualquier interfaz como C#, C++ .net y V b .net. Por ejemplo, estas clases controla el puerto serie que puedes descargar aquí. https://github.com/Gmatarrubia/LibreriasTutorialesHe aprovechado en su tiempo hacer un tutorial sobre esas clases creando una interfaz en C++ bajo Win32 solo consola y funciona, junto con Arduino. Aquí abajo dejo el enlace de como instalarlas y usarlas. https://www.slideshare.net/Metaconta2/arduino-c-y-puerto-serieProbando, hice otro tutorial solo crear una dll que muestra texto y una suma en el cual lo importas a C#, lo lee y funciona tal como indica en el enlace de abajo. https://www.slideshare.net/Metaconta/crear-una-dll-en-c-y-llamarla-con-la-interfaz-cDada ya esta información y antes de empezar, quiero saber si lo que quiero hacer es posible. Para dejarlo más claro, al crear la dll en C++ win32 como indica en el tutorial de arriba, al llamarlo o importarlo con C#, tiene que ser capaz de hacerlo cambiando valores como port, baudios, paridad, bits de stop y demás, algo similar indicado aquí. Luego enviar comandos al puerto serie y recibirlos ya explicado arriba. En resumen:1. De las clases del puerto serie convertirlas en una dll. 2. Una vez creada la dll, hacer una interfaz que se pueda configurar los parámetros del puerto serie. 3. Usar el puerto serie, enviado y recibiendo tramas de bytes como indica en este tutorial ya dicho. ¿Alguna idea? Saludos.
|
|
|
124
|
Programación / .NET (C#, VB.NET, ASP) / Hacer lo mismo de esta "cosa" de la película ochentera
|
en: 4 Mayo 2019, 21:52 pm
|
Hola: Quiero hacer los dibujos exactamente lo mismo como en este ordenador ochentero de esta película exactamente indicado en el minuto 6:56 de este vídeo. Lo que he hecho hasta ahora son solo textos, en el cual no se el motivo, no me sale el rellenado de la parte derecha de la pantalla con el │ ASCII 179. using System; using System.Threading; namespace The_Thing_La_Cosa_Consola_01_cs { class Program { static void Main(string[] args) { Console.Title = "The Thing - La Cosa - C#"; Console.WindowWidth = 38; // X ancho. Console.WindowHeight = 15; // Y altura. int tiempo = 1; // Cursor invisible. Console.CursorVisible = false; // Dibujar cuadro. DrawMarco(1, 1, 35, 14); // Escribir textos. Console.SetCursorPosition(2, 4); Escribir("PROJECTION: \n", 25); Console.SetCursorPosition(2, 5); Escribir("IF INTRUDER ORGANISM REACHES \n", 25); Console.SetCursorPosition(2, 6); Escribir("CIVILIZED AREAS . . . \n", 25); Thread.Sleep(100); Console.SetCursorPosition(2, 10); Escribir("ENTIRE WORLD POPULATION INFECTED \n", 25); Console.SetCursorPosition(2, 11); Escribir("27,000 HOURS FROM FIRST CONTACT. \n", 25); // En español. Thread.Sleep(2000); // Limpiar pantalla. Console.Clear(); // Dibujar cuadro. DrawMarco(1, 1, 35, 14); // Escribir textos. Console.SetCursorPosition(2, 3); Escribir("PROYECCIÓN: \n", 25); Console.SetCursorPosition(2, 4); Escribir("SI ORGANISMO INTRUSO ALCANZA \n", 25); Console.SetCursorPosition(2, 5); Escribir("ZONAS CIVILIZADAS . . . \n", 25); Thread.Sleep(100); Console.SetCursorPosition(2, 9); Escribir("TODA LA POBLACIÓN MUNDIAL INFECTÓ\n", 25); Console.SetCursorPosition(2, 10); Escribir("27,000 HORAS DESDE EL PRIMER\n", 25); Console.SetCursorPosition(2, 11); Escribir("CONTACTO. \n", 25); Console.ReadKey(); } public static void Escribir(string Cadena, int tiempo) { foreach (char letra in Cadena) { Console.Write(letra); Thread.Sleep(tiempo); } } private static void DrawMarco(int v1, int v2, int v3, int v4) { Console.ForegroundColor = ConsoleColor.Cyan; // Texto azul claro. Console.BackgroundColor = ConsoleColor.DarkBlue; // Fondo azul oscuro. Console.Clear(); // Para poner fondo azul oscuro en la pantalla completa. Console.CursorVisible = false; gotoXY(v1, v2, "┌"); for (int i = v1 + 1; i < v3; i++) { gotoXY(i, v2, "─"); } gotoXY(v3, v2, "┐"); for (int i = v2 + 1; i < v4; i++) { gotoXY(v3, i, "│"); } gotoXY(v3, v4, "┘"); for (int i = v3 - 1; i > v1; i--) { gotoXY(i, v4, "─"); } gotoXY(v1, v4, "└"); for (int i = v4 - 1; i > v2; i--) { gotoXY(v1, i, "│"); } //Console.CursorVisible = true; } private static void gotoXY(int v1, int v2, string cadena) { Console.SetCursorPosition(v1, v2); Console.WriteLine(cadena); Thread.Sleep(1); } } }
¿Alguna idea de como hacerlo? Por lo que parece, a pesar de que es del 1982, hoy en día exige mucho tiempo y complicado. Saludos.
|
|
|
125
|
Programación / .NET (C#, VB.NET, ASP) / Simulando barra de progreso
|
en: 27 Febrero 2019, 22:29 pm
|
Hola: Independientemente de la cantidad de █ haya para crear una barra de progreso, no llega al 100 %. Este es su código que he hecho hasta ahora. using System; using System.Threading;
namespace Porcentaje_barra_consola_01_cs { class Program { public static int resultado = 0;
static void Main(string[] args) { // Título de la ventana. Console.Title = "Simulaor barra";
// Tamaño ventana consola. Console.WindowWidth = 60; // X ancho. Console.WindowHeight = 20; // Y altura.
// Cursor invisible. Console.CursorVisible = false;
// Variables. int barra = 49; int porcentaje = 0;
Console.SetCursorPosition(17, 1); Console.Write(" "); Console.SetCursorPosition(17, 1); Console.Write("");
// Dibujamos la barra del portentaje. Console.SetCursorPosition(0, 3); Console.Write("0 % 50 % 100 %"); Console.SetCursorPosition(0, 4); Console.Write("┌────────────────────────────┬───────────────────────────┐"); Console.SetCursorPosition(0, 5); Console.ForegroundColor = ConsoleColor.Yellow;
// Barra de progreso. for (int i = 0; i <= barra; i++) { Console.Write("█"); // Muestra ASCII 219 Dec y DB en Hex. // Console.Write((char)219); // Console.Write(Encoding.ASCII.GetBytes((char)219)); porcentaje++; // Incrementa valor.
printCargando(porcentaje);
Thread.Sleep(100); // 100 ms o 0.1 segundos. }
Console.ReadKey(); }
static void printCargando(int porcentaje) { Console.ForegroundColor = ConsoleColor.Gray; Console.SetCursorPosition(0, 1); // Por dos para que simule el 100%. Console.Write("Cargado: " + (porcentaje).ToString() + " %"); //Console.Write("Cargado: {0} %", (porcentaje * 2).ToString()); //Console.Write($"Cargado: { (porcentaje * 2).ToString() } %");
// Reestablecemos para que vuelva a imprimir bajo la línea de carga. Console.ForegroundColor = ConsoleColor.Yellow; Console.SetCursorPosition(porcentaje, 5); }
} } Gracias.
|
|
|
126
|
Programación / .NET (C#, VB.NET, ASP) / Escuchar música desde que ejecute la consola y dentro de un array tipo Byte.
|
en: 25 Febrero 2019, 23:21 pm
|
Hola: Código que creo que se puede hacer es algo así. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Musica_consola_01_cs { class Program { static void Main(string[] args) { #region Música. /* Posición Inicial: 00000000, Posición Final: 00001891, Longitud: 00001892 */ // Pongo pocos bytes para no agrandar el tema en el foro. byte[] rawData = { 0x4D, 0x54, 0x68, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x08 }; #endregion var c1 = new System.Windows.Media.MediaPlayer(); c1 .Open(new System.Uri(rawData )); c1.Play(); } } }
Me da este error. Gravedad Código Descripción Proyecto Archivo Línea Estado suprimido Error CS0234 El tipo o el nombre del espacio de nombres 'Media' no existe en el espacio de nombres 'System.Windows' (¿falta alguna referencia de ensamblado?) Musica_consola_01_cs C:\Users\Usuario\Documents\Visual Studio 2017\Projects\Musica_consola_01_cs\Musica_consola_01_cs\Program.cs 545 Activo No encuentro en referencia el Media. ¿Alguna idea? Saludos.
|
|
|
127
|
Programación / .NET (C#, VB.NET, ASP) / Introducir y seleccionar lengua en modo consola
|
en: 25 Febrero 2019, 05:51 am
|
Hola: Teniendo un menú hecho por defecto en español en este caso. (Cuando todo esté acabado tiene que estar en Inglés por defecto). Quiero crear menús que sea capaz de elegir el idioma, en al cual hoy en día no hay problema porque está este traductor para escapar. Mi idea para tener un orden de cada idioma a introducir, por ejemplo, español, inglés, alemán, francés, italiano y portugués. En este ejemplo hay 6 lenguas. No se si la mejor opción es crear una carpeta de idiomas y ahí meto cada lengua en el cual es llamado. Código de ejemplo para. using System; namespace Idiomas_consola_01_cs { class Program { static void Main(string[] args) { // Título de la ventana. Console.Title = "Menú - C# 2017"; // Tamaño ventana consola. // X anchura. Console.WindowWidth = 80; // Y altura. Console.WindowHeight = 40; // Oculto el cursor. Console.CursorVisible = false; // Almacena la tecla pulsada en la variable. ConsoleKey teclaInicial; // Fondo verde. Console.BackgroundColor = ConsoleColor.Green; // Letras negras. Console.ForegroundColor = ConsoleColor.Black; do { // Limpiar pantalla. Console.Clear(); // Formato numérico dd/MM/yyyy. Console.WriteLine(DateTime.Now.ToString("ddd dd MMM")); // Almacena en la variable una tecla pulsada. teclaInicial = Console.ReadKey(true).Key; // ¿Haz pulsado la tecla Enter? if (teclaInicial == ConsoleKey.Enter) { // Sí. Se ejecuta esta función. menuPrincipal(); } } while (teclaInicial != ConsoleKey.Escape); } #region Menú Principal. public static void menuPrincipal() { // Contador de teclas y navegador. int opcion = 0; bool salir = false; // Capturar tecla para luego validar. ConsoleKey tecla; do { // Limpiar pantalla. Console.Clear(); switch (opcion) { case 0: Console.SetCursorPosition(0, 0); Console.Write("Language"); break; case 1: Console.SetCursorPosition(0, 0); Console.WriteLine("Opción 1."); break; case 2: Console.SetCursorPosition(0, 0); Console.WriteLine("Opción 2."); break; case 3: Console.SetCursorPosition(0, 0); Console.WriteLine("Opción 3."); break; case 4: Console.SetCursorPosition(0, 0); Console.WriteLine("Opción 4."); break; case 5: Console.SetCursorPosition(0, 0); Console.WriteLine("Opción 5."); break; case 6: Console.SetCursorPosition(0, 0); Console.WriteLine("Opción 6."); break; case 7: Console.SetCursorPosition(0, 0); Console.WriteLine("Salir menú"); break; default: break; } // Fin de pintar el menú. //****************************************************************** // Leer tecla ingresada por el usuario. tecla = Console.ReadKey(true).Key; // Validar el tipo de tecla. if (tecla == ConsoleKey.Enter) { switch (opcion) { case 1: // Instrucciones. break; case 2: // Instrucciones. break; case 3: // Instrucciones. break; case 4: // Instrucciones. break; case 6: // Instrucciones. break; case 7: salir = true; break; default: break; } } if (tecla == ConsoleKey.DownArrow) { opcion += 1; // Equivalente ++. } if (tecla == ConsoleKey.UpArrow) { opcion -= 1; // --. } // Si está en la última opción, salta a la primera. if (opcion > 7) { opcion = 0; } // Si está en la primera posición, salta a la última. if (opcion < 0) { opcion = 7; } // Uso la tecla escape como salida. } while (salir == false); } #endregion } }
En el menú Languaje, si pulsas Enter, tiene que verse en Inglés, todos los idiomas que vayamos incorporando. El usuario elige el idioma y se queda seleccionado. ¿Alguna idea? Saludos.
|
|
|
128
|
Programación / .NET (C#, VB.NET, ASP) / Timer en vez de Sleep.
|
en: 9 Febrero 2019, 11:10 am
|
Hola: Quiero hacer un parpadeo de un texto en modo consola. Por ahora solo me sale con Sleep, pero no me gusta este. Aún así dejo un ejemplo de lo que quiero pero está hecho en Sleep. using System; using System.Threading; // No olvidar. namespace Parpadeo_texto_consola_01_cs { class Program { static void Main(string[] args) { // Título de la ventana. Console.Title = "Blink"; // Tamaño ventana consola. // X anchura. Console.WindowWidth = 16; // Y altura. Console.WindowHeight = 2; // Oculto el cursor. Console.CursorVisible = false; // Como estamos en un ejemplo, da igual en este caso // poner un bucle infinito. Quiero que se muestre el // resultado. while (true) { // Posición de la pantalla. Console.SetCursorPosition(0, 0); // Mostrar texto en pantalla. Console.Write("Hola mundo"); // Retardo de 0.5 segundos. 1000 ml (mili segundos) // es igual a 1 segundo. Thread.Sleep(500); // Posición de la pantalla. Console.SetCursorPosition(0, 0); // Mostrar espaciones en blanco para borrar texto anterior. Console.Write(" "); // Retardo 0.3 seg. Thread.Sleep(300); } } } }
Quiero hacer lo mismo, pero con el Timer en modo consola, lo que me cuesta hacerlo. Ya qu el timer pude interrumpir el programa cuando está dentro del temporizador pero con el Sleep, hasta que no acabe el tiempo, el programa se queda como en esclavo, sobre todo en tiempos muy largos. ¿Hay alguna forma de hacerlo en modo consola? Si se puede hacer el parpadeo en una función y lo llamo cuando quiera, mejor que mejor. Saludos.
|
|
|
129
|
Programación / .NET (C#, VB.NET, ASP) / Menús en modo consola
|
en: 3 Febrero 2019, 08:54 am
|
Hola: Estoy usando la consola de C#, me dio ahora por el retro. Hice este menú de opciones, pero no hace nada. Por ahora solo selecciona las opciones. Lo que no se es como entrar en otra opción dentro de ella en DOS al pulsar Enter. Estoy en el submenú que sale un menaje que diga. Estoy dentro de la opción DOS. Con capacidad de pulsar Escape y vuelva al menú principal. Lo que he hecho hasta ahora es solo esto. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Menu_consola_02_cs { class Program { static void Main(string[] args) { // Título de la ventana. Console.Title = "Menú de opciones"; // Tamaño ventana consola. Console.WindowWidth = 20; // X anchura. Console.WindowHeight = 8; // Y altura. // Cursor invisible. Console.CursorVisible = false; //Contador de teclas y navegador int contador = 0; //tomar la tecla para validar luego ConsoleKey tecla; //escondo el cursor Console.CursorVisible = false; do { //****************************************************************** //Pinto el menú Console.Clear(); Console.Write("╔══════════════════╗\n"); if (contador == 0) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Write("║ UNO ║\n"); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.Write("║ UNO ║\n"); } if (contador == 1) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Write("║ DOS ║\n"); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.Write("║ DOS ║\n"); } if (contador == 2) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Write("║ TRES ║\n"); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.Write("║ TRES ║\n"); } if (contador == 3) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Write("║ CUATRO ║\n"); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.Write("║ CUATRO ║\n"); } if (contador == 4) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.Write("║ ESC = SALIR ║\n"); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.Write("║ ESC = SALIR ║\n"); } Console.Write("╚══════════════════╝\n"); //Fin de pintar el menú //****************************************************************** //leer tecla ingresada por el usuario tecla = Console.ReadKey(true).Key; //validar el tipo de tecla if (tecla == ConsoleKey.DownArrow) { contador += 1; } if (tecla == ConsoleKey.UpArrow) { contador -= 1; } //valido que el conteo de teclas no supere el rango establecido por los Ifs de más arriba if (contador > 4) { contador = 4; } if (contador < 0) { contador = 0; } //uso la tecla escape como salida } while (tecla != ConsoleKey.Escape); } } }
No logro cuajarlo como si se ha hecho por aquí en este otro ejemplo de abajo. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Menu_y_opciones_consola_02_cs { class Program { static void Main(string[] args) { // Título de la ventana. Console.Title = "Menú y opciones C# 2017"; // Tamaño ventana consola. Console.WindowWidth = 30; // X. Ancho. Console.WindowHeight = 17; // Y. Alto. // Cursor invisible. Console.CursorVisible = false; // Cuadro doble borde ventana. Menu_y_opciones_consola_02_cs.Cuadro.cuadrado(); // Posición del mansaje en la ventana. Console.SetCursorPosition(2, 2); Console.WriteLine("Elija una opción:"); Console.WriteLine(""); Console.SetCursorPosition(2, 4); Console.WriteLine("1 - Opción A."); Console.SetCursorPosition(2, 5); Console.WriteLine("2 - Opción B."); Console.SetCursorPosition(2, 6); Console.WriteLine("3 - Opción C."); Console.SetCursorPosition(2, 7); Console.WriteLine("Escape - Salir."); Console.SetCursorPosition(2, 8); Console.Write("==============="); ConsoleKey key; do { // Cursor invisible Console.CursorVisible = false; // Lee cualquier tecla. key = Console.ReadKey(true).Key; // Variable de mensaje vacío. string mensaje = string.Empty; // Leer tecla selecconada por el usuario. switch (key) { case ConsoleKey.D1: // Tecla principal 1. case ConsoleKey.NumPad1: // Tecla extendida 1. Console.SetCursorPosition(2, 10); mensaje = "OPCIÓN A."; // Mostrar mensaje en pantalla. break; case ConsoleKey.D2: case ConsoleKey.NumPad2: mensaje = "OPCIÓN B."; break; case ConsoleKey.D3: case ConsoleKey.NumPad3: mensaje = "OPCIÓN C."; break; } // Posición de los mensajes. Console.SetCursorPosition(2, 10); Console.Write(" "); // 13 espacios. Console.SetCursorPosition(2, 10); Console.Write(mensaje); } // Salir de la plicación al pulsar la tecla Escape o número 4. while (key != ConsoleKey.Escape); } } }
Saludos.
|
|
|
|
|
|
|