Introducción a C#
Por Nacho Cabanes, versión 0.90 de 01-feb-2010

8.2. Nociones básicas de entornos gráficos

En C# podemos crear con una cierta facilidad programas en entornos gráficos, con menús botones, listas desplegables, etc.

La forma más cómoda de conseguirlo es usando herramientas que incluyan un editor visual, como Visual Studio o SharpDevelop.

A pesar de que existen versiones gratuitas de Visual Studio, vamos a ver el caso de SharpDevelop, que necesita un ordenador menos potente y tiene un manejo muy similar.

Cuando entramos a SharpDevelop, diríamos que queremos crear una "nueva solución", y en el menú escogeríamos "Aplicación Windows":

Windows Forms 1

Nos aparecerá un esqueleto de aplicación:

Windows Forms 2

Debajo de la ventana de código hay una pestaña llamada "Diseño", que nos permite acceder al diseñador visual:

Windows Forms 3

Para poder incluir botones y otros elementos visuales, debemos escoger la ventana de "Herramientas" en la parte inferior de la pantalla, y luego el panel "Windows Forms" en esta ventana:

Windows Forms 4

Para incluir un botón, podemos hacer clic en el elemento "Button" del panel izquierdo, y luego hacer un clic en la parte de la ventana en la que queremos que aparezca. De igual modo, podríamos añadir otros elementos.

Por ejemplo, vamos a añadir un botón (Button) y una etiqueta de texto (Label), para hacer un primer programa que cambien el texto de la etiqueta cuando pulsemos el botón.

Windows Forms 5

Las propiedades de cada uno de estos elementos aparecen en la parte derecha, en una nueva ventana. Estas propiedades las podremos cambiar directamente en ese panel, o bien desde código. Algunas de esas propiedades son:

Si queremos que al pulsar el botón cambie el texto, tendremos que modificar el código que corresponde al "evento" de pulsación del botón. Lo conseguimos simplemente haciendo doble clic en el botón, y aparece este texto:

void Button1Click(object sender, EventArgs e)
{
 
}
 

Dentro de ese método escribiremos lo que queremos que ocurra al hacer clic en el botón. Por ejemplo, para que el texto de la etiqueta "label1" pase a ser "Hola", haríamos:

void Button1Click(object sender, EventArgs e)
{
  label1.Text = "Hola";
}
 

Ejercicios propuestos:

8.3. Usando ventanas predefinidas

En una aplicación basada en ventanas, típicamente tendremos que mostrar algún mensaje de aviso, o pedir una confirmación al usuario. Para ello podríamos crear un programa basado en múltiples ventanas, pero eso queda más allá de lo que pretende este texto.

Una forma alternativa y sencilla de conseguirlo es usando "ventanas de mensaje". Éstas se pueden crear llamando a "MessageBox.Show", que tiene varias sintaxis posibles, según el número de parámetros que queramos utilizar. Por ejemplo, podemos mostrar un cierto texto en una ventana que tenga un "caption" dado:

MessageBox.Show("Ese nombre no es válido", "Aviso");

La segunda variante es indicar además qué botones queremos mostrar, y qué iconos de aviso:

MessageBox.Show("Ese nombre no es válido", "Aviso",
         MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

Y la tercera variante permite indicar además cual será el botón por defecto:

MessageBox.Show("¿Seguro que desea continuar?", "Confirma, por favor",
         MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation,
         MessageBoxDefaultButton.Button1);

Como se ve en estos ejemplos, tenemos algunos valores predefinidos para indicar qué botones o iconos queremos mostrar:

Si queremos que el usuario responda tecleando, no tenemos ninguna ventana predefinida que nos lo permita (sí existe un "InputBox" en otros entornos de programación, como Visual Basic), así que deberíamos crear nosotros esa ventana de introducción de datos desde el editor visual o mediante código, elemento por elemento.