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()); } }