Manuelinux

I don't want to grow up

Programando con .net en linux(IV)

Llegamos a la cuarta entrega de esta serie de tutoriales que espero estén siendo aprovechados por mis 5 o 6 lectores, en esta ocasión abordare el uso de un diseñador de interfaces para no tener que escribir a mano todo el código necesario para crear una interfaz gráfica.

Usando MWF-Designer

Mono Windows Forms Designer es una herramienta que aun continua en desarrollo por lo que cuenta con muchos bugs y es muy probable que algunas acciones ocacionen el cierre de la misma, por lo que como advertencia les sugiero guardar cada que agreguen un control para evitar perdidas en nuestro trabajo(no digan que no se los adverti)

Lo primero que hay que hacer es descargar el MWF-Designer desde su version svn, para lo cual necesitamos tener instalado en nuestro sistema un programa de control de versiones

#apt-get install subversion
una vez que tenemos el control de versiones procedemos a descargar

svn co svn://anonsvn.mono-project.com/source/trunk/mwf-designer
mwf-designer esta programado en C# usando mono, asi que hay que movernos a su directorio con
cd mwf-designer
y luego hacemos

make mono-design

make run

nota: en posteriores ocasiones solo sera necesario entrar al directorio y ejecutar el make run para abrir la aplicación, la cual tiene un aspecto como el siguiente:

Crearemos una aplicación muy sencilla, similar al ejemplo de consola donde pedíamos la edad del usuario, solo verificaremos si el usuario es mayor de edad y se lo haremos saber con un mensaje en pantalla. Con el diseñador de interfaces abierto empezaremos creando un nuevo proyecto haciendo click en File-New

llenamos los datos de la siguiente manera:

Namespace: appedades

Class: edades

File: edades.cs

Con lo cual ante nosotros aparece un formulario ya creado y listo para que le agreguemos controles. Lo primero que haremos es reducir el tamaño, por lo que en la venta de propiedades de la derecha modificamos los valores de size y los ponemos como 200,100.

Agregamos un label, cambiamos la propiedad Text por “edad” y ponemos autosize en true.

Agregamos un textbox, cambiamos name por txtedad y el Text lo dejamos en blanco.

Agregamos un control button, cambiamos el text a OK y el name por btnedad

Nuestro diseño debería verse así(sin la ventanita del scrot XD):

Guardamos los cambios y tendremos dos archivos el edades.cs y edades-designer.cs, asi que ahora procedemos a unir esos dos archivos para crear nuestro proyecto con lo que pasamos al siguiente tema.

Usando Monodevelop

Si, ya se que me tarde un poco para llegar a Monodevelop pero es que anteriormente no era tan necesario. Abrimos Monodevelop y esperamos a que cargue el entorno de desarrollo.

Damos click en Archivo - Nueva Solucion seleccionamos C# - Proyecto vacio y llenamos los datos correspondientes poniendo en nombre appedades y la carpeta donde se alojara el proyecto. Click en adelante y aceptar. La solución esta creada pero para empezar agregaremos las referencias necesarias por lo que a la izquierda en el explorador de la solución damos click secundario en referencias y seleccionamos editar referencias. Agregamos las referencias a System, system.drawing, system.data y system.windows.forms. Click en aceptar.

Ahora hacemos click derecho en el nombre de la solucion(appedades) y seleccionamos añadir archivos. navegamos hasta la carpeta donde tenemos el mwf-designer/build y seleccionamos los archivos edades.cs y edades.Designer.cs

Ahora crearemos un archivo para controlar la solucion el cual llamaremos program.cs

para ello damos click derecho en el nombre de la solución y damos en añadir - nuevo archivo, seleccionamos general - clase vacia

dentro de ese archivo creamos un metodo main con el siguiente codigo:

static void Main()

{

Application.Run(new edades());

}

Ahora haciendo uso de los botones en la barra de herramientas ya podemos compilar nuestro proyecto y ejecutarlo desde ahi mismo, con lo que obtendremos una ventana asi:

La cual aun no tienen ninguna funcionalidad pues falta agregar un controlador de evento para el botón OK.

Primero abrimos el archivo edades.Designer.cs y en la parte de la declaracion de btnedad agregamos la siguiente linea:

this.btnedad.Click += new System.EventHandler(btnedad_click);
y dentro de edades.cs creamos el controlador del evento con el siguiente codigo:

private void btnedad_click(object sender, System.EventArgs e)

{

if(Convert.ToInt32(txtedad.Text)<18)

MessageBox.Show(“Eres menor de edad”);

else

MessageBox.Show(“Eres mayor de edad”);

}

Ahora si nuestra aplicacion hace lo que queremos, las posibilidades a partir de ahora son infinitas y ya depende de las aplicaciones que cada quien quiera crear. Estoy abierto a sugerencias sobre aplicaciones que les interese que desarrolle en este espacio y tratare de ayudarlos en la medida de lo posible, para la proxima semana existe la posibilidad de un color mixer para saber el valor en hexa de un color o generacion dinamica de controles, asi que escucho sus votos.

Y para no perder la costumbre, aqui esta el archivo comprimido de este ejemplo

Temas relacionados

{ c, Mono, MonoDevelop, .NET }

Comentarios

domingo 8 de marzo, 2009 @ 18:16

Rafael Bucio

Genial, estoy viendo la forma de añadirlo con esto del gtk jaja

lunes 9 de marzo, 2009 @ 20:52

Charly

Hola que tal mi rex ya vi los articulos pero me siento algo desorientado, por donde comienzo, más vale tarde que nunca je

lunes 9 de marzo, 2009 @ 20:56

Charly

No se si puedas pasarme tu correo

martes 23 de febrero, 2010 @ 07:33

gristormenta

buenas manuel: al hacer make run obtengo un error, pero dentro de la carperta buil puedo hacer un “mono mwf-designer.exe” y éste se abre. Ahora al igual que tu imaen me aparecen símbolos de warning en todos los controles de la paleta de la izquierda y no puedo utilizarlos. ¿Cómo lo has hecho tú?

Gracias!

miércoles 20 de octubre, 2010 @ 03:52

richarsanti

oe hermano, me sale un error al hacer el “make run”,

y al hacer el “make mwf-designer”,nesecito urgente el ide, ya que dento de un mes presentare un sistema en la universidad y quiero marcar la diferencia haciendolo en linux, y no como los windosos que usan “vi?6·l sFudio” aj!!