none
Controlar o que é digitado em um ComboBox Editável - Aplicação Silverlight + C# RRS feed

  • Pergunta

  • Prezados Colegas

    Criei um componente USER CONTROL SILVERLIGHT criei algumas propriedades e uma delas determina que neste COMBOBOX EDITÁVEL será apenas permitida a digitação de números.

    Pesquisando, consegui montar o código, e teoricamente só consigo digitar números, salvo o bug que encontrei:
    Se eu digitar os caracteres ´, `, ^, ~ e ¨ (reparem que são os acentos)  e pressionar uma tecla numérica, o caracter de acento aparece e o número também Ex: ^3.

    Abaixo, segue o código do override do evento OnKeyDown onde trato o que é digitado

    protected override void OnKeyDown(KeyEventArgs e)
            {
                base.OnKeyDown(e);
    
                //Fixa a digitação apenas de números
                if (ncSomenteNumero == true)
                {
                    //Trata o shift
                    if (Keyboard.Modifiers == ModifierKeys.Shift)
                    {
                        e.Handled = true;
                    }
    
                    // Trata as teclas
                    if (!e.Handled && (e.Key < Key.D0 || e.Key > Key.D9))
                    {
                        if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9)
                        {
                            if (e.Key != Key.Back)
                            {
                                e.Handled = true;
                            }
                        }
                    }
                }
                else
                {
                    e.Handled = false;
                }
            }

    Por favor amigos, se alguém puder me dar uma orientação agradeço imensamente!

    Abraço a todos


    Eduardo Agostinho Analista Programador - C# Developer


    • Editado EAgostinho quinta-feira, 13 de setembro de 2012 20:46 Erro de digitação.
    quinta-feira, 13 de setembro de 2012 20:45

Todas as Respostas