Etapa 4: Adicionar um manipulador de evento Click a cada rótulo
O jogo da memória funciona desta forma:
Quando um jogador escolhe um dos quadrados com um ícone oculto, o programa mostra o ícone ao jogador alterando a cor do ícone para preto.
Em seguida, o jogador escolhe outro ícone oculto.
Se os ícones corresponderem, eles permanecerão visíveis.Caso contrário, os ícones serão ocultados novamente.
Para que seu programa funcione dessa forma, adicione um manipulador de eventos Click que altera a cor do rótulo escolhido.
Para adicionar um manipulador de eventos Click a cada rótulo
Abra o formulário no Designer de Formulários do Windows.No Gerenciador de Soluções, escolha Form1.cs ou Form1.vb.Na barra de menu, escolha Exibir, Designer.
Escolha o primeiro controle de rótulo para selecioná-lo.Em seguida, mantenha pressionada a tecla CTRL enquanto escolhe cada um dos outros rótulos para selecioná-los.Verifique se cada um dos rótulos foi selecionado.
Escolha o botão Eventos na barra de ferramentas da janela Propriedades para exibir a página Eventos na janela Propriedades.Role para baixo até o evento Click e insira label_Click na caixa, conforme mostrado na imagem a seguir.
Janela Propriedades mostrando o evento Click
Escolha a tecla ENTER.O IDE adiciona um manipulador de eventos Click chamado label_Click() ao código e o vincula a cada um dos rótulos no formulário.
Preencha o restante do código, como se segue:
''' <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; } }
Observação Se você copiar e colar o bloco de código label_Click() em vez de inserir o código manualmente, não se esqueça de substituir o código label_Click() existente.Caso contrário, você terá um bloco de código duplicado.
Observação Você pode reconhecer object sender no início do manipulador de eventos como o mesmo usado no tutorial Tutorial 2: Criar um teste de matemática com cronômetro.Como você vinculou diferentes eventos Click de controle de rótulo a um único método do manipulador de eventos, o mesmo método será chamado, independentemente de qual rótulo foi escolhido pelo usuário.O método do manipulador de eventos precisa saber qual rótulo foi escolhido, de modo que ele usa o nome remetente para identificar o controle de rótulo.A primeira linha do método informa o programa que ele não é apenas um objeto genérico, mas especificamente um controle de rótulo e que usa o nome clickedLabel para acessar as propriedades e os métodos do rótulo.
Esse método primeiramente verifica se clickedLabel foi convertido com êxito de um objeto em um controle de rótulo.Se a conversão não foi bem-sucedida, ele terá um valor null (C#) ou Nothing (Visual Basic), e não será conveniente executar o restante do código no método.Em seguida, o método verifica a cor do texto do rótulo escolhido usando a propriedade ForeColor do rótulo.Se a cor do texto do rótulo for preto, isso significa que o ícone já foi escolhido e o método já executado. (Isso é o que a instrução return faz: informa o programa para interromper a execução do método.) Caso contrário, o ícone não foi escolhido, de modo que o programa altera a cor do texto do rótulo para preto.
Na barra de menus, escolha Arquivo, Salvar Tudo para salvar seu progresso e, em seguida, na barra de menus, escolha Depurar, Iniciar Depuração para executar seu programa.Você deverá ver um formulário vazio com um plano de fundo azul.Escolha qualquer uma das células no formulário e um dos ícones deverá se tornar visível.Continue escolhendo diferentes locais no formulário.À medida que você escolhe os ícones, eles devem aparecer.
Para continuar ou revisar
Para ir para a próxima etapa do tutorial, consulte Etapa 5: Adicionar referências de rótulo.
Para retornar à etapa anterior do tutorial, consulte Etapa 3: Atribuir um ícone aleatório a cada rótulo.