Etapa 5: Adicionar referências de rótulo
O programa precisa controlar quais rótulo controla os cliques do player.Após o primeiro rótulo é clicado, o programa mostra o ícone do rótulo.Após o segundo rótulo é clicado, o programa precisa para mostrar ambos os ícones por um curto período e, em seguida, tornar os ícones invisíveis novamente.Seu programa manterá o controle das quais rótulo controle é clicado, primeiro e o que é clicado segundo usando variáveis de referência.
Para adicionar referências de rótulo
Adicione referências de rótulo ao formulário usando o código a seguir.
Public Class Form1 ' firstClicked points to the first Label control ' that the player clicks, but it will be Nothing ' if the player hasn't clicked a label yet Private firstClicked As Label = Nothing ' secondClicked points to the second Label control ' that the player clicks Private secondClicked As Label = Nothing
public partial class Form1 : Form { // firstClicked points to the first Label control // that the player clicks, but it will be null // if the player hasn't clicked a label yet Label firstClicked = null; // secondClicked points to the second Label control // that the player clicks Label secondClicked = null;
Observação As variáveis de referência semelhante para as instruções que você usou para adicionar objetos (como Timer objetos, List objetos, e Random objetos) ao seu formulário.No entanto, essas instruções não causem extra de dois rótulo controles aparecem no formulário porque não há nenhum new de uma destas duas instruções.Sem new, nenhum objeto é criado.É por isso que firstClicked e secondClicked são chamados de variáveis de referência: eles simplesmente controlar (ou consulte o) Label objetos.
Observação Quando uma variável não é manter o controle de um objeto, ele é definido como um valor especial: null no Visual C# e Nothing em Visual Basic.Portanto, quando o programa for iniciado, ambos firstClicked e secondClicked são definidas como null ou Nothing, que significa que as variáveis não estão controlando de nada.
Modificar seu manipulador de eventos Click para usar o novo firstClicked variável de referência.Remover a última instrução na label_Click() método manipulador de eventos (clickedLabel.ForeColor = Color.Black;) e substituí-lo com o if a instrução.(Certifique-se de incluir o comentário e todo o if demonstrativo.)
''' <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 ' If firstClicked is Nothing, this is the first icon ' in the pair that the player clicked, ' so set firstClicked to the label that the player ' clicked, change its color to black, and return If firstClicked Is Nothing Then firstClicked = clickedLabel firstClicked.ForeColor = Color.Black Exit Sub End If 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; // If firstClicked is null, this is the first icon // in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and return if (firstClicked == null) { firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; } } }
Salve e execute o programa.Clique em uma da rótulo controles e seu ícone aparece.
Clique em próximo rótulo controle e observe que nada acontecerá.O programa já é manter a faixa do primeiro rótulo que o player clicado, isso firstClicked não for igual a null no Visual C# ou Nothing em Visual Basic.Quando seu if verificações de instrução firstClicked para determinar se ele é igual a null ou Nothing, ele localiza que não é, e ele não executa as instruções na if instrução.Portanto, somente o primeiro ícone que é clicado fica preto e dos outros ícones são invisíveis, como mostrado na figura a seguir.
Jogo da memória mostrando um ícone
Para continuar ou revisar
Para ir para a próxima etapa do tutorial, consulte Etapa 6: Adicionar um Timer.
Para retornar para a etapa anterior do tutorial, consulte Etapa 4: Adicionar um manipulador de evento Click para cada etiqueta.