C# día 17: aplicaciones windows
Solo por encima vamos a ver algunos elementos más que podemos meter en las aplicaciones visuales con c#. Veamos algunos elementos nuevos
/**
* Elementos.cs
* Ejemplo de uso de elementos de windows.
* A la hora de compilar, para ejecutar como aplicación de windows
* y para que no salga una ventana de DOS, hay que usar estas opciones
* csc /t:winexe Formularios.cs o en su defecto
* csc /r:System.Windows.Forms.dll /t:winexe Formularios.cs
*
*/
// Usamos esta librería para los formularios de windows
using System.Windows.Forms;
using System.Drawing; // Para posicionamiento
// La clase debe heredar de Form
public class Elementos : Form
{
// Los controles hay que definirlos como atributos
// para manejarlos desde cualquier método o handler de eventos
private Label etiqueta;
private Button boton;
private RadioButton opcionA;
private RadioButton opcionB;
private GroupBox agrupador; // Para agrupar los radiobuttons
private ListBox superLista;
// Constructor
public Elementos ()
{
inicializar();
}
// Inicializa los componentes
private void inicializar ()
{
// Vamos a establecer un título
this.Text = "Aplicación con controles";
// TAMAÑO
this.Width = 600;
this.Height = 400;
// Elementos /////////////////
// LABEL o etiqueta
etiqueta = new Label();
etiqueta.Text = "Elija algo";
// Con Controls.Add lo añadimos
this.Controls.Add(etiqueta);
// RadioButtons ////////////
// iniciamos el agrupador
this.agrupador = new GroupBox();
this.agrupador.Location = new Point(190, 60);
this.agrupador.Size = new Size(400, 200);
this.agrupador.TabStop = false;
this.agrupador.Text = "Elije";
// Creamos instancia y la damos propiedades
this.opcionA = new System.Windows.Forms.RadioButton();
this.opcionA.Location = new System.Drawing.Point(20, 65); // Posición relativa a su contenedor
this.opcionA.Size = new Size(90, 15); // Tamaño
this.opcionA.Text = "Plan A"; // Texto
this.opcionA.TabIndex = 0; // Orden en la tabulación
this.opcionB = new System.Windows.Forms.RadioButton();
this.opcionB.Location = new System.Drawing.Point(20, 90); // Posición relativa a su contenedor
this.opcionB.Size = new System.Drawing.Size(90, 15); // Tamaño
this.opcionB.Text = "Plan B"; // Texto
this.opcionB.TabIndex = 1; // Orden en la tabulación
this.agrupador.Controls.Add(opcionA);
this.agrupador.Controls.Add(opcionB);
this.Controls.Add(agrupador);
// LISTA ///////////////////////////////
superLista = new ListBox();
this.superLista.Location = new System.Drawing.Point(20, 90); // Posición
this.superLista.Size = new System.Drawing.Size(90, 35); // Tamaño
// Añadimos elementos a la lista
superLista.Items.Add("Los cuatro jinetes");
superLista.Items.Add("La peste");
superLista.Items.Add("La guerra");
superLista.Items.Add("El hambre");
superLista.Items.Add("La muerte");
this.Controls.Add(superLista);
// BUTTON o botones
boton = new Button();
boton.Text = "Botón de acción";
boton.Left = 200;
boton.Top = 300;
// Asociamos un evento al botón
boton.Click += new System.EventHandler(this.boton_Click);
this.Controls.Add(boton);
}
// Evento para el botón
private void boton_Click (object objeto, System.EventArgs e)
{
// Termina la aplicación
Application.Exit();
}
// Método principal
public static void Main ()
{
// Pod´riamos usar Show, pero con Run nos hace el trabajo sucio
Application.Run(new Elementos());
}
}
Y ahora veamos como meter menús y un messageBox clásico. Existen muchos dialogs predefinidos, pero no es el objetivo profundizar en loa programación visual. Habiendo gtk...
/**
* Menus.cs
* Ejemplo de uso de Menús en ventanas
* A la hora de compilar, para ejecutar como aplicación de windows
* y para que no salga una ventana de DOS, hay que usar estas opciones
* csc /t:winexe Formularios.cs o en su defecto
* csc /r:System.Windows.Forms.dll /t:winexe Formularios.cs
*
*/
// Usamos esta librería para los formularios de windows
using System;
using System.Windows.Forms;
using System.Drawing; // Para posicionamiento
// La clase debe heredar de Form
public class Menus : Form
{
// Los controles hay que definirlos como atributos
// para manejarlos desde cualquier método o handler de eventos
private Label etiqueta;
private MainMenu menuFichero;
// Constructor
public Menus ()
{
inicializar();
}
// Inicializa los componentes
private void inicializar ()
{
// Vamos a establecer un título
this.Text = "Aplicación con controles";
// TAMAÑO
this.Width = 600;
this.Height = 500;
// Elementos /////////////////
// LABEL o etiqueta
etiqueta = new Label();
etiqueta.Text = "Elija algo";
this.etiqueta.Location = new System.Drawing.Point(20, 40);
// Con Controls.Add lo añadimos
this.Controls.Add(etiqueta);
// MENU /////////////////////
this.menuFichero = new MainMenu();
MenuItem menuitemFichero = menuFichero.MenuItems.Add("File");
menuitemFichero.MenuItems.Add(new MenuItem("Saluda",new EventHandler(this.Saluda_Selection)));
menuitemFichero.MenuItems.Add(new MenuItem("Salir", new EventHandler(this.Salir_Selection)));
MenuItem menuitemHelp = menuFichero.MenuItems.Add("&Ayuda");
menuitemHelp.MenuItems.Add(new MenuItem("&Ayudame...",new EventHandler(this.FileAyuda_Selection)));
this.Menu = menuFichero;
}
// Evento para el menú
private void Saluda_Selection (object objeto, System.EventArgs e)
{
// Termina la aplicación
MessageBox.Show( "Hola que tal!", "Saludo");
}
// Evento para el menú
private void Salir_Selection (object objeto, System.EventArgs e)
{
// Otra forma de salir en lugar de Exit
this.Close();
}
// Evento para el menú
private void FileAyuda_Selection (object objeto, System.EventArgs e)
{
// Termina la aplicación
MessageBox.Show( "Ayuda? rtfm o stfg", "Acerca de");
}
// Método principal
public static void Main ()
{
// Pod´riamos usar Show, pero con Run nos hace el trabajo sucio
Application.Run(new Menus());
}
}
pello.io