Paso 5: Agregar un controlador de eventos MouseEnter para cada muro
El juego del laberinto sería más divertido y supondría un reto mayor si enviase el puntero del mouse del usuario al principio cada vez que tocase un muro.Antes de seguir leyendo, piense en cómo lo haría.
Para obtener una versión en vídeo de este tema, vea tutorial 2: Crear un Laberinto en Visual Basic - vídeo 3 o tutorial 2: Crear un Laberinto en C# - vídeo 3.
Para agregar un controlador de eventos MouseEnter para cada muro
Vaya al Diseñador de Windows Forms y haga clic en cualquiera de los muros recién agregados.
Vaya a la ventana Propiedades y haga clic en el icono Evento para mostrar los eventos de ese muro.Desplácese hacia abajo hasta el evento MouseEnter.En lugar de hacer doble clic en él, escriba el texto wall_MouseEnter y, a continuación, presione ENTRAR.El icono Evento y la ventana Propiedades aparecen con el siguiente aspecto.
Icono de evento
Ventana Propiedades con el evento MouseEnter
[!NOTA]
Al escribir directamente el nombre de evento en la tabla de eventos en la ventana Propiedades, se le ordena al IDE que cree un controlador de eventos con ese nombre y lo conecte al evento del control.A menudo, es preferible que el IDE elija los nombres de los eventos, porque los nombres son lógicos y el uso de nombres facilita a los demás la lectura y comprensión de su código.Cuando el IDE elige un nombre para un controlador de eventos, utiliza el nombre del control y el nombre del evento.En este caso, no hemos modificado los nombres predeterminados de los muros, que son label4, label18, label25, etc.Así pues, al hacer clic en un muro denominado label12, el IDE habría dado al controlador de eventos el nombre label12_MouseEnter.Al escribir el nombre wall_MouseEnter, estamos eligiendo un nombre más aplicable.Esto resulta especialmente importante cuando se utiliza un mismo controlador de eventos para varios controles, que es lo que haremos más adelante en este tutorial.
Después de presionar ENTRAR, el IDE agrega un nuevo controlador de eventos y lo conecta al evento MouseEnter de ese muro.El código recién agregado debería aparecer en el editor de código como sigue.En Visual Basic, puede que la etiqueta concreta no sea Label8, como se muestra en el código.
Private Sub wall_MouseEnter() Handles Label8.MouseEnter End Sub
private void wall_MouseEnter(object sender, EventArgs e) { }
A continuación, agregue una llamada a su método MoveToStart(), junto con un comentario que lo explique.Para empezar, vaya al método y agregue la instrucción MoveToStart().Se abre una ventana IntelliSense y aparece lo siguiente.
Ventana IntelliSense
Cuando agregamos, antes, el método MoveToStart(), el IDE lo agregó a la ventana IntelliSense.El comentario XML que agregamos aparece en la información sobre herramientas.Esto resulta útil cuando se escriben programas con gran cantidad de métodos.
Presione la tecla TAB para ordenar a IntelliSense que complete el nombre del método.Si está escribiendo el código en Visual C#, recuerde agregar el signo de punto y coma (;) al final de la instrucción.A continuación, agregue un comentario encima de la instrucción.El código debe tener un aspecto parecido al siguiente.En Visual Basic, puede que la etiqueta concreta no sea Label8, como se muestra en el código.
Private Sub wall_MouseEnter() Handles Label8.MouseEnter ' When the mouse pointer hits a wall or enters the panel, ' call the MoveToStart() method. MoveToStart() End Sub
private void wall_MouseEnter(object sender, EventArgs e) { // When the mouse pointer hits a wall or enters the panel, // call the MoveToStart() method. MoveToStart(); }
Guarde y ejecute el programa.Mueva el puntero del mouse por encima del muro al que ha conectado el controlador de eventos.(Si no recuerda cuál eligió, mueva el puntero del mouse sobre cada muro hasta que encuentre el apropiado.) En cuanto lo toque, debería devolver el puntero del mouse al principio.
Luego, hay que hacer lo mismo para el resto de los muros.Puede escribir el mismo controlador de eventos MouseEnter para cada uno de ellos.Sin embargo, sería un proceso largo, que daría lugar a varias líneas del mismo código en el programa y sería difícil de cambiar.El IDE proporciona una manera más fácil de conectar el mismo controlador de eventos a todos los muros.
Vaya al Diseñador de Windows Forms y haga clic en Seleccionar todo en el menú Edición.
Mantenga presionada la tecla CTRL y, a continuación, haga clic en la etiqueta Finish para borrar la selección.Deberían quedar seleccionados todos los muros y el panel.
Ahora, vaya a la tabla de eventos de la ventana Propiedades.Desplácese hacia abajo hasta el evento MouseEnter y haga clic en el cuadro de edición situado a su lado.Debería ver una flecha de lista desplegable.Al hacer clic en la flecha, aparece una lista de todos los controladores de eventos del programa que puede elegir para este evento.En este caso, debería aparecer el controlador de eventos finishLabel_MouseEnter que agregó anteriormente, así como el controlador wall_MouseEnter que acaba de escribir, como se muestra en la siguiente imagen.
Evento MouseEnter con controladores de eventos
Seleccione wall_MouseEnter.(Si selecciona el controlador de eventos equivocado o agrega uno nuevo accidentalmente, puede seleccionar todos los muros y el panel otra vez y, a continuación, elegir el método correcto.)
Ahora, el juego del laberinto debería resultar más divertido.Pruebe a guardarlo y ejecutarlo.Si su puntero toca un muro o usted lo saca del laberinto y vuelve a entrar en él, el programa debería cambiar de posición automáticamente el puntero y situarlo al principio del laberinto.
Para continuar o revisar
Para ir al siguiente paso del tutorial, vea Paso 6: Agregar un SoundPlayer.
Para volver al paso anterior del tutorial, vea Paso 4: Agregar un método para reiniciar el juego.