Compartilhar via


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

  1. 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çãoObservaçã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çãoObservaçã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.

  2. 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;
            }
        }
    }
    
  3. Salve e execute o programa.Clique em uma da rótulo controles e seu ícone aparece.

  4. 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

    Jogo da memória mostrando um ícone

Para continuar ou revisar