Partilhar via


Etapa 5: Adicionar manipuladores de eventos Enter para os controles NumericUpDown

Na quinta parte deste tutorial, você adicionará manipuladores de eventos de Enter para facilitar a inserção de respostas aos problemas do teste.Esse código selecionará e desmarcará o valor atual em cada controle NumericUpDown para que o comprador de teste o escolha e comece em inserir um valor diferente.

ObservaçãoObservação

Esse tópico faz parte de uma série de tutoriais sobre conceitos de codificação básica.Para obter uma visão geral do tutorial, consulte Tutorial 2: Criar um teste de matemática com cronômetro.

Para verificar o comportamento padrão

  1. Executar seu programa e iniciar o teste.

    No controle NumericUpDown para o problema de adição, o cursor pisca ao lado de 0 (zero).

  2. Digite 3, e note que o controle mostra 30.

  3. Digite 5, e note que aparece 350, mas que é alterado para 100 após um segundo.

    Antes de corrigir esse problema, pense no que está acontecendo.Considere o motivo de 0 não ter desaparecido quando você inseriu 3 e como 350 se alterou para 100, mas não imediatamente.

    Esse comportamento pode parecer ímpar, mas faz sentido dada a lógica de código.Quando você escolhe o botão Iniciar, sua propriedade de Habilitado é definida como Falso e o botão aparece esmaecido e não fica disponível.Seu programa altera a seleção atual (foco) para o controle que tem o menor valor TabIndex a seguir, que é o controle NumericUpDown para o problema de adição.Quando você usa a tecla Tab para ir para um controle NumericUpDown, o cursor fica posicionado automaticamente no início do controle, por isso os números que você insere aparecem do lado esquerdo e não do lado direito.Quando você especifica um número maior que o valor da propriedade de MaximumValue, que é definida como 100, o número digitado é substituído pelo valor da propriedade.

Para adicionar um manipulador de eventos para inserir um controle NumericUpDown

  1. Escolha o primeiro controle NumericUpDown (chamado “soma”) no formulário e, em seguida, na caixa de diálogo Propriedades, escolha o ícone de Eventos na barra de ferramentas.

    O guia Eventos na caixa de diálogo Propriedades exibe todos os eventos para os quais você pode responder (manipular) para o item que você escolher no formulário.Como você escolheu o controle NumericUpDown, todos os eventos listados serão pertinentes a ele.

  2. Escolha o evento de Enter, digite answer_Enter, e pressione a tecla ENTER.

    Caixa de diálogo Propriedades

    Caixa de diálogo Propriedades

    Você adicionou um manipulador de para Inserir evento ao controle NumericUpDown de soma e você nomeou o manipulador answer_Enter.

  3. No método para o manipulador de evento answer_Enter, adicione o seguinte código.

    ''' <summary>  
    ''' Modify the behavior of the NumericUpDown control 
    ''' to make it easier to enter numeric values for 
    ''' the quiz. 
    ''' </summary>  
    Private Sub answer_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sum.Enter
    
        ' Select the whole answer in the NumericUpDown control. 
        Dim answerBox = TryCast(sender, NumericUpDown)
    
        If answerBox IsNot Nothing Then 
            Dim lengthOfAnswer = answerBox.Value.ToString().Length
            answerBox.Select(0, lengthOfAnswer)
        End If 
    
    End Sub
    
    private void answer_Enter(object sender, EventArgs e)
    {
        // Select the whole answer in the NumericUpDown control.
        NumericUpDown answerBox = sender as NumericUpDown;
    
        if (answerBox != null)
        {
            int lengthOfAnswer = answerBox.Value.ToString().Length;
            answerBox.Select(0, lengthOfAnswer);
        }
    }
    

    Este código pode parecer complexo, mas você pode entender se observar o passo a passo.Primeiro, olhe na parte superior de método: object sender no C# ou sender As System.Object no Visual Basic.Este parâmetro refere-se ao objeto cujo evento é acionando, que é conhecido como o remetente.Nesse caso, o objeto remetente é o controle NumericUpDown.Assim, na primeira linha do método, você especifica que o remetente não é apenas nenhum objeto genérico mas especificamente um controle NumericUpDown. (Cada controle NumericUpDown é um objeto, mas nem todo objeto é um controle NumericUpDown.) O controle NumericUpDown é chamado answerBox nesse método, porque será usado para todos os controles NumericUpDown no formulário, não apenas o controle NumericUpDown de soma.Como você declara a variável answerBox nesse método, seu escopo se aplica somente a este método.Ou seja, a variável pode ser usada somente dentro desse método.

    A próxima linha verifica se o answerBox foi convertido com êxito (conversão) de um objeto em um controle NumericUpDown.Se a conversão for malsucedida, a variável terá um valor de null (C#) ou de Nothing (Visual Basic).A terceira linha obtém o comprimento da resposta que aparece no controle NumericUpDown, e a quarta linha seleciona o valor atual no controle com base nesse comprimento.Agora, quando o comprador de teste escolher o controle, o Visual Studio aciona este evento, fazendo com que a resposta atual seja selecionada.Assim que o tomador de teste começa a inserir uma resposta diferente, a resposta anterior é apagada e substituída pela nova resposta.

  4. No designer do Windows Forms, escolha o controle NumericUpDown da diferença.

  5. Na página Eventos da caixa de diálogo Propriedades, role para baixo até o evento Enter, escolha a seta suspensa no final da linha e, em seguida, escolha o manipulador de eventos answer_Enter que você adicionou.

  6. Repita a etapa anterior para o produto e os controles NumericUpDown quocientes.

  7. Salve seu programa e execute-o.

    Quando você escolhe um controle NumericUpDown, o valor existente é automaticamente selecionado e limpo, quando você começa a inserir um valor diferente.

Para continuar ou revisar