TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: LordLafebre en 17 de Abril de 2006, 13:10:00

Título: Enviar cursor a posicion de pantalla en aplicacion consola C#
Publicado por: LordLafebre 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...!!!
Título: Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
Publicado por: Geo 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).
Título: Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
Publicado por: LordLafebre 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.
Título: Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
Publicado por: BrunoF 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!!!
Título: Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
Publicado por: LordLafebre en 18 de Abril de 2006, 16:56:49
Hola:

Gracias Bruno ese ejemplo me funciono muy bien, desconocia de lo que comentaste antes...  :-/
Título: Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
Publicado por: Geo 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).
Título: Re: Enviar cursor a posicion de pantalla en aplicacion consola C#
Publicado por: BrunoF 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!