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.
ERES LO MÁXIMO hahahaha
Gracias esto me servirá de mucho Tocayo
Aquí andamos saludos
Gracias