Paso 4: Agregar un controlador de eventos Click a cada etiqueta
El juego de formar parejas funciona como sigue:
Cuando un jugador hace clic en uno de los cuadrados con icono oculto, el programa muestra el icono al jugador cambiando a negro su color.
A continuación, el jugador hace clic en otro icono oculto.
Si los iconos coinciden, permanecen visibles.En caso contrario, se vuelven a ocultar.
Para conseguir que un programa funcione así, agregue un controlador de eventos Click que cambie el color de la etiqueta en la que se hace clic.
Para agregar un controlador de eventos Click a cada etiqueta
Vaya al Diseñador de Windows Forms y haga clic en el primer control Label para seleccionarlo.A continuación, mantenga presionada la tecla CTRL mientras hace clic en cada una de las otras etiquetas para seleccionarlas.Asegúrese de que todas las etiquetas están seleccionadas.
A continuación, vaya a la página Eventos de la ventana Propiedades.Desplácese hacia abajo hasta el evento Click y escriba label_Click en el cuadro, como se muestra en la siguiente ilustración.
Ventana Propiedades con el evento Click
Presione ENTRAR.El IDE agrega al código un controlador de eventos Click denominado label_Click() y lo enlaza a cada una de las etiquetas.
Rellene el resto del código como se indica a continuación:
''' <summary> ''' Every label's Click event is handled by this event handler ''' </summary> ''' <param name="sender">The label that was clicked</param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub label_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label9.Click, Label8.Click, Label7.Click, Label6.Click, Label5.Click, Label4.Click, Label3.Click, Label2.Click, Label16.Click, Label15.Click, Label14.Click, Label13.Click, Label12.Click, Label11.Click, Label10.Click, Label1.Click Dim clickedLabel = TryCast(sender, Label) If clickedLabel IsNot Nothing Then ' If the clicked label is black, the player clicked ' an icon that's already been revealed -- ' ignore the click If clickedLabel.ForeColor = Color.Black Then Exit Sub clickedLabel.ForeColor = Color.Black End If End Sub
/// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label_Click(object sender, EventArgs e) { Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; clickedLabel.ForeColor = Color.Black; } }
[!NOTA]
Es posible que reconozca, del tutorial para crear una prueba matemática, el elemento object sender que se muestra en la parte superior del controlador de eventos.Enlazó distintos eventos Clic del control Label a un único método de controlador de eventos, de modo que se llama al mismo método con independencia de la etiqueta en la que haga clic el usuario.Dado que el método necesita saber en qué etiqueta se hizo clic, usa el nombre sender para ese control Label.La primera línea del método indica al programa que no es solo un objeto, sino que es, en concreto, un control Label y que, a través del nombre clickedLabel, se tiene acceso a sus propiedades y métodos.
Este método comprueba primero si clickedLabel se convirtió (mediante conversión de tipos) correctamente de un objeto en un control Label.Si no, tiene un valor Null (C#) o Nothing (Visual Basic), y no se desea ejecutar el resto del código en el método.Luego, el método comprueba el color del texto de la etiqueta en la que se hizo clic mediante la propiedad ForeColor.Si ya es negro, se ha hecho clic en el icono, de modo que el método ha terminado.(Esto es lo que hace la instrucción return: indica al programa que deje de ejecutar el método). Si no se ha hecho clic en el icono, cambia el color del texto a negro.
Guarde y ejecute el programa.Debería ver un formulario vacío con un fondo azul.Haga clic en el formulario; uno de los iconos debería volverse visible.Siga haciendo clic en distintos lugares del formulario.A medida que hace clic en los iconos, deberían aparecer.
Para continuar o revisar
Para ir al siguiente paso del tutorial, vea Paso 5: Agregar referencias a etiquetas.
Para volver al paso anterior del tutorial, vea Paso 3: Asignar un icono aleatorio a cada etiqueta.