none
uso de Cursores en C# RRS feed

  • Pregunta

  • Hola!

     

    Estoy haciendo un proyecto en C# con windows.forms.

     

    Mi probleama es que necesito usar un cursor y no se como hacerlo.

    Tengo un label y cuando me llega un mensaje, tengo que posicionar el cursor en un determinado lugar, además tener la opción de esconder el cursor.

     

    Si alguien me podría ayudar?

    Gracias

    martes, 15 de mayo de 2007 8:05

Respuestas

  • Yo utilizaría la fuente Courier New para los labels, de este modo, todos los caracteres ocuparán el mismo espacio, y podrás dibujar una línea debajo del caracter que quieras calculando su posición con una simple multiplicación.

     

    Supongo que habrán más complicaciones, no?

     

    A ver si las podemos ir comentado.

     

    Un saludo!

    viernes, 18 de mayo de 2007 10:06
    Moderador
  • OK. Location, efectívamente es sólo de lectura.

     

    Utiliza la propiedad Top, en lugar de Location.X, y la propiedad Left, en lugar de Location.Y

     

    Un saludo!

    lunes, 21 de mayo de 2007 10:40
    Moderador
  • El ancho a usar debería ser de 8 píxeles, aunque deberías ir haciendo pruebas para encontrar el ajuste perfecto.

     

    Un saludo!

    lunes, 21 de mayo de 2007 15:30
    Moderador
  • OK, perfecto!

     

    Entonces todavía te queda una pequeña tarea, marcar la consulta como contestada.

     

    Gracias!

    martes, 22 de mayo de 2007 6:44
    Moderador

Todas las respuestas

  • Cursor de ratón o de teclado?
    martes, 15 de mayo de 2007 8:53
    Moderador
  • Yo creo que de teclado, por que es para la pda, o si no sería para el lapiz de puntear.
    martes, 15 de mayo de 2007 9:29
  • OK, perfecto.

     

    El problema estaba en que al ponerlo en el foro de Windows Forms en lugar del de .NET Compact Framework, me ha asaltado la duda.

     

    Voy a ver que encuentro.

    martes, 15 de mayo de 2007 9:43
    Moderador
  • Alguien me ayuda?

    Estoy desesperada

    viernes, 18 de mayo de 2007 7:34
  • OK, lo siento... me había olvidado.

     

    Con el método .Focus no te sirve?

     

    Un saludo!

    viernes, 18 de mayo de 2007 8:38
    Moderador
  • No.

    Esque tengo un label de 20 caracteres y me tengo que posicionar en uno de esos 20 caracteres:

     

    XXXXXXXXXXXXXXXXXXXX

     

    Ese sería el ejemplo.

    viernes, 18 de mayo de 2007 8:51
  • Pero es que un label no tiene cursor ?¿?

     

    No te pillo...

    viernes, 18 de mayo de 2007 9:12
    Moderador
  • Es que hay esta el tema.

     

    Te explico mejor.

    Yo tengo que hacer un programa que recibe datos mediante puerto serie y despues depende del mensaje que llega hago una cosa o la otra.

    Entonces un mensaje es mostrar en una pantallita un cursor en la posicion indicada.

     

    La cosa el que yo tengo dos label de esta manera:

    XXXXXXXXXXXXXXXXXXXX

    XXXXXXXXXXXXXXXXXXXX

     

     

    En estos label voy escribiendo los mensajes a partir de la posicion que me indica el mensaje que me llega por ejemplo.

    Pero tambien hay otra opcion que se trata de posicionar un cursor encima de la posicion indicada..

     

    Por ejemplo si la posicion que me llega es la 2, tendre que mostrar lo siguiente:

    XXXXXXXXXXXXXXXXXXXX  Lo subrayado representa el cursor.

     

    No tengo ni idea de como hacerlo y no se si me estoy explicando bien

    viernes, 18 de mayo de 2007 9:47
  • Yo utilizaría la fuente Courier New para los labels, de este modo, todos los caracteres ocuparán el mismo espacio, y podrás dibujar una línea debajo del caracter que quieras calculando su posición con una simple multiplicación.

     

    Supongo que habrán más complicaciones, no?

     

    A ver si las podemos ir comentado.

     

    Un saludo!

    viernes, 18 de mayo de 2007 10:06
    Moderador
  • Gracias

    Lo de la fuente ya tengo puesta pero como hago lo de la línea? no lo he entendido muy bien.

    Ya ves que soy un poco novata en esto.

    viernes, 18 de mayo de 2007 10:33
  • Pues pongamos que pones otro label tan solo con un subrayado, lo pones con False en la propiedad Visible, y te aseguras de que quede por detrás de los otros labels mediante el menú contextual del control, la opción "Enviar al fondo". Le aplicas la misma fuente y tamaño de fuente al nuevo label, al que me referiré a partir de ahora como subrayado.

     

    Colocas el subrayado en la misma posición X que el label que contiene el carácter a subrayar, y en la posición Y + algo más para que se pueda ver el subrayado.

     

    En cuanto por ejemplo quieras subrayar el 4 caracter, modificas la posición horizontal del subrayado del siguiente modo:

     

    X = X + (Ancho * 4)

     

    Tendrás que jugar un poco con el valor de Ancho para conseguir un resultado perfecto.

     

    Venga pues,

    Salu2!

    viernes, 18 de mayo de 2007 11:02
    Moderador
  • Ya lo he intentado pero no lo consigo.

     

    Despues de hacer los calculos que hago?

    Tendre que poner visible=true? y cambiarle el location?

    lunes, 21 de mayo de 2007 9:07
  • Efectívamente, visible=true y cambiar location.
    lunes, 21 de mayo de 2007 9:30
    Moderador
  • Pues estoy haciendo eso pero no lo consigo. no se porque:

     

    x = detras.Location.X;

    x += (11.1 * inicial);

    //MessageBox.Show(x.ToString());

    //this.detras.Location.X = Convert.ToInt32(x);

    y = detras.Location.Y;

    //detras.Location = System.Drawing.Point(x, y);

    detras.Visible = true;

    lunes, 21 de mayo de 2007 9:41
  • Un par de cosas:

     

    - En tu código no estás cambiando la posición del label.

     

    - Que contiene la variable inicial?

     

    Un saludo!

    lunes, 21 de mayo de 2007 10:02
    Moderador
  • Ya se que no lo stoy cambiando!

     

    Me dice que no puedo cambiar el location. Pero intento mostrar el label en el sitio que está y no puedo.

     

    En la variable inicial guardo la posicion en la que debe mostrarse el cursor

    lunes, 21 de mayo de 2007 10:18
  • OK. Location, efectívamente es sólo de lectura.

     

    Utiliza la propiedad Top, en lugar de Location.X, y la propiedad Left, en lugar de Location.Y

     

    Un saludo!

    lunes, 21 de mayo de 2007 10:40
    Moderador
  • Gracias pero creo que el top y el  left deberian zer al reves.

     

    Despues, no puedo encontrar la formula de que vaya recorriendo en la x de manera correcta.

    lunes, 21 de mayo de 2007 14:32
  • Tienes razón es al revés...

     

    Qué problema tiene la fórmula?

    lunes, 21 de mayo de 2007 14:43
    Moderador
  • Pues que en realidad no se cual es el anchor.

    La letra es courier new 10pt

     

     

    lunes, 21 de mayo de 2007 15:11
  • El ancho a usar debería ser de 8 píxeles, aunque deberías ir haciendo pruebas para encontrar el ajuste perfecto.

     

    Un saludo!

    lunes, 21 de mayo de 2007 15:30
    Moderador
  • OK!

    Muchas gracias

    lunes, 21 de mayo de 2007 15:43
  • Lo has conseguido resolver?
    lunes, 21 de mayo de 2007 18:12
    Moderador
  • Si, muchas gracias de verdad
    martes, 22 de mayo de 2007 6:27
  • OK, perfecto!

     

    Entonces todavía te queda una pequeña tarea, marcar la consulta como contestada.

     

    Gracias!

    martes, 22 de mayo de 2007 6:44
    Moderador