none
AfterUpdate en textbox en C# RRS feed

  • Pregunta

  • Hola, he estado trabajando con VBA y formularios Access y utilizaba la propiedad AfterUpdate para saber cuando cambiaba el contenido de un textbox. En WinForms en C# solo encuentro el evento TextChanged, pero ese evento se lanza cada vez que pulsas una tecla, no al final mientras que afterupdate se lanzaba al perder el foco si el texto habia cambiado.

    Lo que uqieor hacer es que al introducir un valor compruebe si está en la base de datos, pero si entro en el textbox y no cambio los datos, que no lo compruebe. Hay algun evento que me haga eso, que solo salte al salir del textbox si se ha cambiado el texto? O tengo que hacerlo a mano con una variable donde guarde el valor original?

     

    viernes, 1 de octubre de 2010 16:23

Respuestas

  • hola

    podrias usar los eventos Enter y Leave, son similares a los otros dos que no ves en la lista de eventos

    igual aunque no veas esos eventos desde tu codigo en el Form_Load puedes atacharte a ellos

    private void Form1_Load(object sender, EventArgs e)
    {
        Textbox1.GotFocus += new EventHandler(txtShort_GotFocus);
    }

    void Textbox1_GotFocus(object sender, EventArgs e)
    {
       
    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 1 de octubre de 2010 18:52

Todas las respuestas

  • hola

    podrias al ingresa al control en el GotFocus conservar el valor original en una variable y al salir de este ya sea con el TextChange o LostFocus, compara si el valor actual es igual al que tenias previamente en la variable

    si es igual no vas contra la db, si es distinto lo validas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 1 de octubre de 2010 16:30
  • Por eso preguntaba, por si habia algún evento que lo comprobara no hacerlo yo. Como uso en todos los forms un textbox heredado de uno ya personalizado puedo crear el evento o una propiedad para ello. Se me han ocurrido dos formas:

    1. En el evento GotFocus, como tu dices guardar el valor y en LostFocus o Leave compararlo.

    2. Crear una propiedad: bool HaCambiado. En el evento GotFocus establecerla a false, y en el evento TextChange, que se lanza cuando cambias algo del texto del textBox, ponerla a true. Despues en LostFocus o Leave -> comprobar esa propiedad. Si es true, es que ha cambiado.

     

    Que opción crees que es más adecuada?

    viernes, 1 de octubre de 2010 17:29
  • Por cierto, me acabo de dar cuenta que en mis textbox (tanto los que he echo yo como los que viene por defecto) no me aparecen los eventos LostFocus y GotFocus en la ventana propiedades, aunque en código si vienen.
    viernes, 1 de octubre de 2010 18:19
  • hola

    podrias usar los eventos Enter y Leave, son similares a los otros dos que no ves en la lista de eventos

    igual aunque no veas esos eventos desde tu codigo en el Form_Load puedes atacharte a ellos

    private void Form1_Load(object sender, EventArgs e)
    {
        Textbox1.GotFocus += new EventHandler(txtShort_GotFocus);
    }

    void Textbox1_GotFocus(object sender, EventArgs e)
    {
       
    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 1 de octubre de 2010 18:52