Manuelinux

I don't want to grow up

Programando con .net en linux(III)

Usando Windows Forms

Despues de la breve introducción a la programación en C# de la semana pasada llegamos ahora a la parte de la programación grafica. Se puede usar gtk# para esto, pero orientandonos a una programación multiplataforma y tomando en cuenta que windows forms ya esta implementado en mono, usaremos dicha tecnologia que ademas convierte la programación de interfaces graficas en algo verdaderamente sencillo.

Las Bibliotecas

Para un proyecto grafico tenemos que incluir ademas de system dos librerias mas:

using System;

using System.Windows.Forms;

using System.Drawing;

Nuestra primera ventana

Crear una ventana es algo bastante sencillo, solo hay que crear una clase que derive de la clase Form y eso sera suficiente, nuestra primera ventana quedaria en codigo de la siguiente manera.

Public class ventanita : Form

{

public ventanita()

{

}

public static void Main()

{

Application.Run(new ventanita();

}

}

Esto lo escribimos en cualquier editor, agregando las directivas using que mencione en un principio, para escribirlo usamos cualquier editor de texto, recomiendo usar geany, ayer descubrí que tambien funciona bien con proyectos de C#. Guardaremos el archivo como ventanita.cs

para compilarlo ejecutamos la siguiente orden:

gmcs ventanita.cs -pkg:dotnet

y ejecutamos normalmente

mono ventanita.exe

puedes acomodar geany para compilar haciendo click en construir – inclusiones y argumentos y editando la linea para compilar dejandola asi:

gmcs “%f” -pkg:dotnet

lo de ejecutar aun no me sale, si lo consigo se los hago saber.

Bien, ya tenemos una venta muy generica, pero podemos cambiar sus propiedades como el tamaño y el texto que se montrara en la barra de arriba, para ello crearemos un metodo que llamaremos dentro del constructor, he nombrado el metodo como InitializeComponents

public ventanita()

{

InitializeComponents();

}

private void InitializeComponents()

{

ClientSize = new Size(200,200);

Name=“ventanita”;

Text= “El mundo es cruel”;

}

public static void Main()

{

Application.Run(new ventanita());

}

}

la ejecución nos daría como resultado algo asi:

Agregando elementos a nuestra ventana

Ahora usando el mismo esqueleto agregaremos una etiqueta y un boton, para lograrlo agregaremos las variables correspondientes en la definición de la clase, antes del constructor

private Label lblSaludo;

private Button btnSaludo;

ahora dentro del metodo InitializeComponentes crearemos las instancias y modificaremos algunas propiedades para la etiqueta

lblSaludo= new Label(); //nueva instancia

lblSaludo.Text=“Hola Mundo!!!”; //texto

lblSaludo.TextAlign = ContentAlignment.MiddleCenter; //alineacion

lblSaludo.Location = new Point(53,48); //ubicación

lblSaludo.Size = new Size(187,35); //tamaño

Controls.Add(lblSaludo); //agregamos el control al formulario

y lo siguiente es para el botón

btnSaludo = new Button(); //nueva instancia

btnSaludo.Text = “Estoy Amargado”; //texto del boton

btnSaludo.Location = new Point(53,90); //ubicación

btnSaludo.Size = new Size(187,23); //tamaño

Controls.Add(btnSaludo); //agregamos al formulario

Ahora compilamos para observar el resultado, como podemos ver nuestro boton no hace nada por el momento, para ello hay que crear un manejador para el evento click del boton, para ello antes de agregarlo al formulario incluimos lo siguiente

btnSaludo.Click += new System.EventHandler(btnSaludo_Click);

lo cual indica que agregamos un manejador para el evento click

Ahora en antes del metodo Main definimos el metodo para el manejador del evento de la siguiente manera:

private void btnSaludo_Click(object sender, EventArgs e)

{

lblSaludo.Text = “El mundo es cruel!!!”;

}

ahora al hacer click en el boton el texto del label cambiara

Pues bien, les dejo como siempre el archivo comprimido de los sources de ambos ejemplos y los invito a crear sus propios ejemplos, como pueden ver crear formularios a base de codigo es un poco dificil, por lo que en la proxima entrega de este curso apŕenderemos el uso de un diseñador de interfaces y Monodevelop ahora si.

Espero sus dudas y comentarios, asi como sugerencias, de mi parte solo queda una entrega mas sobre esto, pero estoy abierto a escuchar peticiones.

Temas relacionados

{ c, Mono, MonoDevelop, .NET }

Comentarios

martes 3 de marzo, 2009 @ 03:11

gndx

ERES LO MÁXIMO hahahaha

Gracias esto me servirá de mucho Tocayo

Aquí andamos saludos

Gracias

viernes 6 de marzo, 2009 @ 02:05

Rafael Bucio