none
TextBox seleccionado no se borra con otra tecla RRS feed

  • Pregunta

  • Hola, tengo un problemita

    normalmente en un TextBox, si hay texto y está seleccionado

    éste se borra automáticamente cuando escribes sobre el

     

    pero en WPF no pasa eso, selecciono el texto, y cuando quiero escribir sobre el

    no me deja, porque?

    como puedo evitar esto

    muchas gracias


    • Editado kakaroto2012 viernes, 11 de noviembre de 2011 2:03
    viernes, 11 de noviembre de 2011 2:03

Respuestas

  • Hola Omar

    Encontré tu problema.

    El Regex está limitando tu cadena a una 'x' cantidad de números. Sucede que cuando tu pones:

    Pongamos el caso que tu has ingresado 11111 y has seleccionado los valores para cambiarlos por un numero nuevo. En este caso usaremos el primer Regex que máximo son 5 números. Al llegar a la siguiente línea:

    string text = (sender as TextBox).Text + e.Text;

    text va a ser igual a 111113 es decir 6 números, por eso es que NumEx.IsMatch(text); da false y al negarse (!) te da true y no se actualiza el valor.

    Espero me haya explicado bien.

    Un saludo


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta kakaroto2012 viernes, 11 de noviembre de 2011 4:47
    viernes, 11 de noviembre de 2011 2:55

Todas las respuestas

  • Hola Omar

    Esto está un poco extraño, pues estoy haciendo lo que tu comentas y a mí si que se me borra el texto seleccionado.

    Muestra un poco de tu código xaml (algún Style creado, declaración del TextBox, etc) y si estas utilizando algún evento con el TextBox

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    viernes, 11 de noviembre de 2011 2:29
  • cierto, si inserto otro textbox en limpio

    si lo permite

    sin embargo, los que ya tengo no lo hacen

    tengo dos eventos en el textbox mira...

    éste lo tengo relacionado con el evento PreviewKeyUp

     private void txtSpreadParticipante_PreviewKeyUp(object sender, KeyEventArgs e)
            {
                try
                {
                    if (e.Key == Key.Enter)
                    {
                        //Obtiene el indice de la caja de texto que está enviando el evento Enter
                        int indice = Array.IndexOf(txtSpreads, (TextBox)sender);
                        SubirSpread(indice);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    

     

    esto lo pongo en el  PreviewTextInput

            /// <summary>
            /// Método para solo permitir numeros sin decimales en una caja de texto
            /// </summary>
            /// <param name="sender">Caja de texto</param>
            /// <param name="e"></param>
            private void TextBox_SoloNumeros(object sender, TextCompositionEventArgs e)
            {
                Regex NumEx;
    
                if (sender is TextBox)
                {
                    //expresión regular para identificar solo numeros
                    NumEx = new Regex(@"^\d{0,5}$");
    
                    if(((TextBox)sender).Name.Contains("txtSpread"))
                        NumEx = new Regex(@"^\d{0,1}$");
    
                    if (((TextBox)sender).Name == "txtIncremento")
                        NumEx = new Regex(@"^\d{0,1}$");
    
                    if (((TextBox)sender).Name == "txtConvocador")
                        NumEx = new Regex(@"^\d{0,4}$");
                    
    
                    string text = (sender as TextBox).Text + e.Text;
    
                    e.Handled = !NumEx.IsMatch(text);
                }
                else
                    throw new NotImplementedException("TextBox_PreviewTextInput Can only Handle TextBoxes");
    
            }
    

     

    uno de los dos me lo está bloqueando, sabes cual y porque?

    muchisimas gracias!!! como siempre

    viernes, 11 de noviembre de 2011 2:36
  • Hola Omar

    Encontré tu problema.

    El Regex está limitando tu cadena a una 'x' cantidad de números. Sucede que cuando tu pones:

    Pongamos el caso que tu has ingresado 11111 y has seleccionado los valores para cambiarlos por un numero nuevo. En este caso usaremos el primer Regex que máximo son 5 números. Al llegar a la siguiente línea:

    string text = (sender as TextBox).Text + e.Text;

    text va a ser igual a 111113 es decir 6 números, por eso es que NumEx.IsMatch(text); da false y al negarse (!) te da true y no se actualiza el valor.

    Espero me haya explicado bien.

    Un saludo


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta kakaroto2012 viernes, 11 de noviembre de 2011 4:47
    viernes, 11 de noviembre de 2011 2:55
  • Muchas gracias!!!
    viernes, 11 de noviembre de 2011 4:47