Partilhar via


Etapa 5: Adicionar insira manipuladores de eventos para controles NumericUpDown

Você deve ter notado algo estranho sobre como digitar os números no NumericUpDown controle.Para corrigir isso, você pode adicionar um manipulador de eventos Enter.

Para ver o comportamento do controle NumericUpDown

  1. Execute o programa e iniciar o jogo.A soma NumericUpDown controle deve ter um cursor piscando no it ao lado de 0 (zero).

  2. Tipo de 3, e 30 é exibida.Tipo de 5, e 350 for exibida, mas após o segundo, ele muda para 100.

    Antes de você corrigir esse problema, pense sobre o que está acontecendo.Considere o motivo pelo qual o 0 não desaparecem quando digitado 3. Considerar por que 350 alterado para 100, e por que havia um atraso antes de alterá-lo.

    ObservaçãoObservação

    Embora ele possa parecer comportamento estranho, há uma explicação.Quando você clica o Iniciar botão, o botão Enabled propriedade estiver definida como False, e o botão estiver esmaecido e não está disponível.O programa procura o controle com o próximo menor valor TabIndex — a soma NumericUpDown controle — e altera o foco para esse controle.Quando você usa a tecla TAB para ir para um NumericUpDown controle, ele automaticamente posiciona o cursor no início do controle, que é o que faz com que os números que você digitar a devem ser inseridos da esquerda e direita não.Quando você insere um número acima de MaximumValue propriedade, que é definida como 100, ele substitui o número inserido com o valor máximo.

Para adicionar um manipulador de eventos para o controle NumericUpDown Enter

  1. Para evitar esse comportamento estranho e facilitar o uso do seu programa, adicione um manipulador de eventos para cada NumericUpDown controlar o evento Enter.Uso o eventos página o Propriedades caixa de diálogo para adicionar um manipulador de eventos Enter da soma NumericUpDown controle chamado answer_Enter.

    Caixa de diálogo Propriedades

    Caixa de diálogo Propriedades

    O código deve ser semelhante ao seguinte.

    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);
        }
    }
    

    Embora ele possa parecer complexo inicialmente, é mais fácil de compreender se você examiná-la passo a passo.Primeiro, examine a parte superior do método: object sender em C# ou sender As System.Object em Visual Basic.Isso significa que dentro de seu método, sempre que você usa sender, refere-se ao NumericUpDown controle cujo evento Enter está disparando.Assim, na primeira linha do método, você especifica que ele não é apenas um objeto, mas especificamente uma NumericUpDown controle.(Cada NumericUpDown controle é um objeto, mas não a cada objeto é um NumericUpDown controle.) A próxima linha verifica se o answerBox foi convertido com êxito (convertido) de um objeto para um NumericUpDown controle.Se não houver êxito, ele teria um valor nulo (C#) ou nada (Visual Basic).A terceira linha descobre o comprimento da que está sendo exibido em resposta a NumericUpDown controle.A quarta linha informa o NumericUpDown o controle para selecionar a resposta.Agora quando o usuário navega no controle, ele aciona este evento, o que faz com que ele selecionar a resposta.Assim que o usuário começar a digitar, a resposta anterior é desmarcada e substituída pela nova resposta.

  2. Após esse manipulador de eventos está em vigor, vá para o Windows Forms Designer e selecione a diferença NumericUpDown controle.Vá para o eventos página o Propriedades caixa de diálogo, role para baixo até o evento Enter e selecione o manipulador de eventos que você acabou de adicionar.

  3. Em seguida, faça o mesmo para o produto e o quociente NumericUpDown controles.

  4. Salve e execute o programa.O comportamento estranho não deve ocorrer mais.

Para continuar ou revisar