Autor Tema: Enviar cursor a posicion de pantalla en aplicacion consola C#  (Leído 10930 veces)

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

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Enviar cursor a posicion de pantalla en aplicacion consola C#
« en: 17 de Abril de 2006, 13:10:00 »
Hola:

Pues eso amigos, alguien sabe como enviar el cursor a una posicion de la pantalla en C# para aplicacion consola?

por ejemplo, como en el antiguo C: gotoxy(10,10);

gracias...!!!

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
« Respuesta #1 en: 18 de Abril de 2006, 00:08:42 »
Así:
Código: C#
  1. using System;
  2.  
  3. Console.CursorLeft = 10; // columna
  4. Console.CursorTop = 10; // fila
  5. Console.Write( "Este texto inicia en la columna 11 de la fila 11" );

o así:
Código: C#
  1. using System;
  2.  
  3. Console.SetCursorPosition( 10, 10 );

(Como que para ser un lenguaje que no he usado como que se le entiende rápido, ¿será por su familiaridad con C++?)

Saludos,
José Jorge (Geo).
« Última modificación: 18 de Abril de 2006, 00:12:47 por Geo »
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
« Respuesta #2 en: 18 de Abril de 2006, 01:47:18 »
Hola:

Gracias geo por tu tiempo, algo como eso lo intente con la ayuda de Bruno, de hecho algo como esto:

using System;

Código: C#
  1. namespace cursor_XY
  2. {
  3.         /// <summary>
  4.         /// Descripción breve de Class1.
  5.         /// </summary>
  6.         class Class1
  7.         {
  8.                 /// <summary>
  9.                 /// Punto de entrada principal de la aplicación.
  10.                 /// </summary>
  11.                 [STAThread]
  12.                 static void Main(string[] args)
  13.                 {
  14.                         //
  15.                         // TODO: agregar aquí código para iniciar la aplicación
  16.                         //
  17.                         Console.SetCursorPosition(10,10);
  18.                 }
  19.         }
  20. }

pero me sa un error:  'System.Console' no contiene una definición para 'SetCursorPosition'

Estoy utilizando Visual Studio 2003, y no doy y no doy, no se como hacer eso.

Saludos.
« Última modificación: 18 de Abril de 2006, 02:11:44 por LordLafebre »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
« Respuesta #3 en: 18 de Abril de 2006, 15:47:31 »
Hola Gio,Geo

En las versiones .NET 1.0 y 1.1, las instrucciones CursorLeft,CursorTop y SetCursorPosition no existen. Por lo tanto, hay que utilizar las llamadas a las librerias para lograrlo.

Aqui va un ejemplo:

Código: C#
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Text;
  4.  
  5. public struct coord
  6. {
  7.         internal short x,y;
  8. }
  9.  
  10. namespace cursor_XY
  11.  
  12.  
  13. {
  14.  
  15.         /// <summary>
  16.         /// Descripción breve de Class1.
  17.         /// </summary>
  18.         class Class1
  19.         {
  20.                 /// <summary>
  21.                 /// Punto de entrada principal de la aplicación.
  22.                 /// </summary>
  23.                
  24.                 internal const int STD_OUTPUT_HANDLE = -11;
  25.                 [DllImport("kernel32.dll", SetLastError=true)]
  26.                 public static extern bool SetConsoleCursorPosition(IntPtr handle, coord dato);
  27.                
  28.                 [DllImport("kernel32.dll")]
  29.                 public static extern IntPtr GetStdHandle(int nStdHandle);
  30.  
  31.                 [STAThread]
  32.                 static void Main(string[] args)
  33.                 {       //
  34.                         // TODO: agregar aquí código para iniciar la aplicación
  35.                         //
  36.                
  37.                 coord denada;
  38.                 denada.x = 20;
  39.                 denada.y = 20;
  40.                 IntPtr hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  41.                 SetConsoleCursorPosition(hConsole,denada);
  42.                 System.Console.WriteLine("Estoy en la posicion 20,20");
  43.                 System.Console.Read();
  44.         }
  45. }
  46. }

Exitos!!!
« Última modificación: 18 de Abril de 2006, 15:51:11 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
« Respuesta #4 en: 18 de Abril de 2006, 16:56:49 »
Hola:

Gracias Bruno ese ejemplo me funciono muy bien, desconocia de lo que comentaste antes...  :-/

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
« Respuesta #5 en: 18 de Abril de 2006, 17:56:14 »
Hola Gio,Geo

En las versiones .NET 1.0 y 1.1, las instrucciones CursorLeft,CursorTop y SetCursorPosition no existen. Por lo tanto, hay que utilizar las llamadas a las librerias para lograrlo.
Eso, las propiedades CursorLeft, CursorTop y la función SetCursorPosition están disponibles para System.Console desde la versión 2.0 del framework .NET.

De paso me resolviste mi duda de cómo hacer para acceder a algunas funciones de la API, gracias :).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
« Respuesta #6 en: 18 de Abril de 2006, 18:26:35 »
Exacto! como bien dijiste, esas instrucciones sólo se implementaron a partir de la versión VS .NET FrameWork 2.0.
Las instrucciones que posteaste Geo están bien, solo faltó el detalle de LordLafebre de decir que esta trabajando con una versión anterior a la 2.0.
Asi que recomiendo que.a partir de ahora, ante cualquier duda, especifíquen la versión que esten utilizando.
Exitos!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.