Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Lucha en 12 de Julio de 2006, 12:09:42 AM

Título: MessageBox??? Para que???
Publicado por: Lucha en 12 de Julio de 2006, 12:09:42 AM
¡Hola a todos!

Vengo del VB al C# y me he encontrado con muchos problemas. Uno de ellos es la utilización del MessageBox. Yo solía utilizar este control para ver el contenido de una variable en modo ejecución. Por ejemplo, en el metodo:

private void OnKeyDown(object sender, KeyEventArgs e)
       {
          MessageBox.Show(e.KeyValue);
       }

me devuelve el siguiente error:

Argument '1': cannot converto from 'int' to 'string'

¿Qué puedo hacer para poder ver en pantalla con un MessageBox el valor de la tecla pulsada en cada momento?

Gracias.
Título: MessageBox??? Para que???
Publicado por: AbelNightroad en 12 de Julio de 2006, 12:18:27 AM
MessageBox.Show(e.KeyValue.ToString());
Título: MessageBox??? Para que???
Publicado por: [EX3] en 12 de Julio de 2006, 01:53:33 AM
Otro "Visual Basiquero" a la 6º potencia como yo :lol: Lucha, VB.NET no permite hacer autocasting de tipos de datos con las variables como mas o menos permitia de forma transparente VB6. En VB.NET si algo es String le tienes que pasar por narices un String (contando con que la clausula Option Strict esta activada, claro).

Para pasar a String todas los tipos de datos, en el caso de .NET, todas las 'clases' de datos tienen un metodo ToString(). Para realizar conversiones a otro tipo de dato cada clase de dato tiene sus propios metodos Parse() y TryParse():
Dim Var As Integer = Integer.Parse("0123")
Int Var = Int.Parse("0123");
Pero para globalizar el tema, en VB.NET tenemos la funcion CType(<tipo de dato al que queremos convertir>, <expresion a convertir>), en C# si no recuerdo mal es Convert(<tipo de dato al que queremos convertir>, <expresion a convertir>)
Dim Var As Integer = CType(Integer, "0123")
Int Var = Convert(Int, "0123");
Tambien puedes en C# hacer la chapuza de importar la libreria de compatibilidad con VB6 y tirar de las funciones de conversion de VB6: CStr(<expresion>), CInt(<expresion>), etc...

Salu2...
Título: MessageBox??? Para que???
Publicado por: zupervaca en 12 de Julio de 2006, 01:02:45 PM
Solo queria indicarte que si quieres ver el contenido de una variable en tiempo de ejecucion lo mejor es que aprendas a poner puntos de ruptura y a depurar las aplicaciones.

Suerte!!
Título: MessageBox??? Para que???
Publicado por: tamat en 12 de Julio de 2006, 01:05:29 PM
Lo mismo que te ha dicho ZuperVaca, un buen programador tiene que ser un buen debugador, aprender a usar los breakpoints en la linea adecuada es muy util, no solo podras ver el valor de dicha variable, sino tambien las de las demás, incluso podras cambiar el valor y reanudar la ejecución sin necesidad de recompilar.
Título: MessageBox??? Para que???
Publicado por: fiero en 12 de Julio de 2006, 02:28:33 PM
A veces aparecen errores sólo en la versión "Release" del programa, entonces no se puede usar el debug, el MessageBox viene muy bien en estos casos para ver el valor de alguna variable. A veces también me he encontrado situaciones en las que quería ver el estado de una variable sin que el programa perdiera el foco. Siempre viene bien tener un MessageBox a mano :)

un saludo
Título: MessageBox??? Para que???
Publicado por: vincent en 12 de Julio de 2006, 02:31:11 PM
Un ficherillo de logs tampoco biene mal...
Título: MessageBox??? Para que???
Publicado por: bnl en 12 de Julio de 2006, 02:40:38 PM
Yo tambien utilizo ficheros de logs. Me parece lo mas util para rastrear errores en producción. En este entorno no puedes sacar a los usuarios ventanas con mensajes. En entorno web, no te valdría el msgbox si no el alert.

Tengo tambien un fichero de configuración que se puede cambiar "en caliente" donde indico si estoy en modo depuracion o no. Cuando la activo entonces escribo en el log muchisima información.
Título: Gracias!
Publicado por: Lucha en 12 de Julio de 2006, 03:15:10 PM
¡Gracias a todos!

He anotado todas vuestras respuestas.

Gracias a todos de corazón.